0

0

旧闻 , PHP已经拿起了切刀

php中文网

php中文网

发布时间:2016-06-13 11:16:23

|

1321人浏览过

|

来源于php中文网

原创

旧闻 , PHP已经拿起了切刀!

下面是群里诸位对php aop扩展的讨论,还捎带对比了一下traits 。有浅显易懂的讲解,不要错过!

Catimind
Catimind

专为行业应用打造的AI生产力工具

下载
Rango(xxxxxxxx0) 17:47:02 
http://pecl.php.net/package/AOP
Rango(xxxxxxxx0) 17:47:14 
PHP AOP编程扩展
Rango(xxxxxxxx0) 17:47:16 
很牛叉
令狐雨辰(xxxxxxxx2) 17:47:32 
have a look
摘取天上星 17:48:09 
look  look~
Rango(xxxxxxxx0) 17:48:38 
非侵入式编程,这个在设置框架时可以用起来
Rango(xxxxxxxx0) 17:48:42 
设计框架
令狐雨辰(xxxxxxxx2) 17:49:36 
这有点像 php5.4的 traits 呀
Rango(xxxxxxxx0) 17:50:03 
不是一回事
令狐雨辰(xxxxxxxx2) 17:50:06 
哦哦
令狐雨辰(xxxxxxxx2) 17:50:09 
不是的
令狐雨辰(xxxxxxxx2) 17:50:11 
不是的
令狐雨辰(xxxxxxxx2) 17:50:18 
嗯这个确实很有用
令狐雨辰(xxxxxxxx2) 17:50:25 
不过用PHP也能实现呀
令狐雨辰(xxxxxxxx2) 17:50:34 
__call($name,$args) {
}
令狐雨辰(xxxxxxxx2) 17:50:38 
我都是这么搞的
令狐雨辰(xxxxxxxx2) 17:50:51 
稍等秀一段代码
令狐雨辰(xxxxxxxx2) 17:51:58 


PHP AOP


Sango 17:58:19 
AOP没有用过
简单看了下介绍,貌似通俗的讲
AOP提供了 watch 功能
这个确实可以玩出很多有用的花样
Rango(xxxxxxxx0) 17:59:25 
不需要改变代码,就能实现各种功能特性
Rango(xxxxxxxx0) 17:59:46 
实现代码注入
Sango 17:59:48 
这个确实很厉害,透明的
令狐雨辰(xxxxxxxx2) 18:01:25 
嗯,是的,做二次开发很方便。
令狐雨辰(xxxxxxxx2) 18:01:30 
不用去hack原来的代码
凯旋(346157403) 18:01:44 
实现代码注入
Sango 18:01:52 
说实话,超喜欢PHP的简洁
都是下面这两项很不舒服
$开头变量还得shift
.被用来字符串连接
令狐雨辰(xxxxxxxx2) 18:02:10 
就是你去call class.method的时候,先去执行一段其他的逻辑
Rango(xxxxxxxx0) 18:04:23 
假设你的框架有一个 Frameworkd::init方法,就是初始化框架。如果现在有db,template的初始化也需要在这个阶段执行
Rango(xxxxxxxx0) 18:05:00 
普通的做法就是只能修改 Frameworkd::init在里面加入 db,template的方法调用。这种做法是侵入性的
Rango(xxxxxxxx0) 18:05:24 
假设以后增加了一个 cache模块,也要初始化,那还得修改 Frameworkd::init
Rango(xxxxxxxx0) 18:06:39 
这个扩展也可以用hook list的方式来实现。但远没有AOP强大
Rango(xxxxxxxx0) 18:06:49 
没有这个扩展
我就是我(xxxxxxxx6) 18:07:40 
麻烦楼上,继续普及下,那AOP的流程是什么样的
令狐雨辰(xxxxxxxx2) 18:07:40 
嗯。我觉得这个其实是个双刃剑吧,看用的人水平。

因为写这个类的人,他其实不清楚他这个类最终会被怎么用,用这种注入会不会引起他类内部其他的BUG。
令狐雨辰(xxxxxxxx2) 18:08:10 
用得好了,框架可以写的很牛X,架构清晰简单。
令狐雨辰(xxxxxxxx2) 18:08:21 
用得不好了,就是处处坑 : )
Sango 18:09:23 
http://aop-php.github.com/
这个用到框架里面很有搞头
Sango 18:09:52 
完全透明的,应用领域太大了
我就是我(xxxxxxxx6) 18:10:04 
Rango, 麻烦你继续下说下刚才的Frameworkd::init问题。
如果用AOP,是怎么样来处理的
Sango 18:10:31 
http://aop-php.github.com/ 里面有例子啊
完全透明的
Sango 18:10:46 
Rango(xxxxxxxx0) 18:10:58 
AOP就直接来个 aop_add_around
Sango 18:11:00 
Sango 18:11:25 
对于 class 来说 AOP完全都不存在
我就是我(xxxxxxxx6) 18:11:58 
tks
Sango 18:12:28 
这个比watch啥的更直接有效,这也许是脚本语言特有的工作方式
有效,简单,硬道理
令狐雨辰(xxxxxxxx2) 18:12:48 
嗯,symfony为了实现这个,用了个很麻烦的方式。
令狐雨辰(xxxxxxxx2) 18:13:10 
这个确实很好,回去试试看
令狐雨辰(xxxxxxxx2) 18:13:53 
俺去推广一下
令狐雨辰(xxxxxxxx2) 18:13:55 
: )
Sango 18:14:12 
这东西2012年才有的啊,好东西好东西啊
感谢Rango啊
追麾(1372712268) 18:16:59 
我在这里,点击查看:http://maps.google.com/maps?q=32.970565,112.549169&iwoc=A&hl=zh-CN (南阳市宛城区长江中路) 
令狐雨辰(xxxxxxxx2) 18:17:02 
这东东能不能对内置的类做AOP啊
令狐雨辰(xxxxxxxx2) 18:17:13 
如果能的话,我就能做好多事儿了
追麾(1372712268) 18:17:16 
手机QQ语音,点击收听http://ph.qq.com/8745758/4416202949962068766 
我就是我(xxxxxxxx6) 18:19:04 
感谢Rango,看了一下demo,大概理解了一个基本流程,有些hook的影子。
Rango(xxxxxxxx0) 18:19:30 
: )
Rango(xxxxxxxx0) 18:19:41 
时常关注pecl.php.net
令狐雨辰(xxxxxxxx2) 18:19:43 
令狐雨辰(xxxxxxxx2) 18:19:48 
果然是强的一B
令狐雨辰(xxxxxxxx2) 18:20:02 
这样统计QUERY时间,就很容易啦
令狐雨辰(xxxxxxxx2) 18:20:19 
所有socket请求的,都能轻松统计到
PHP-干不明白 18:20:38 
?
令狐雨辰(xxxxxxxx2) 18:20:56 
比如你用 memcache.get
令狐雨辰(xxxxxxxx2) 18:21:04 
带宽满的时候,
令狐雨辰(xxxxxxxx2) 18:21:12 
你默认设置下,会block住
PHP-干不明白 18:21:23 
令狐雨辰(xxxxxxxx2) 18:21:24 
你可以在get前后加一个切面
令狐雨辰(xxxxxxxx2) 18:21:29 
统计这个时间
令狐雨辰(xxxxxxxx2) 18:21:38 
一旦大于某个阈值,就上报
PHP-干不明白 18:21:47 
怎么加
令狐雨辰(xxxxxxxx2) 18:21:56 
看demo被。。。
Sango 18:22:00 
在php热部署的能力下,加上xdebug,这玩意要逆天了
PHP-干不明白 18:22:02 
?
PHP-干不明白 18:22:10 
共享啊
令狐雨辰(xxxxxxxx2) 18:22:15 
https://github.com/AOP-PHP/AOP
令狐雨辰(xxxxxxxx2) 18:22:24 
就刚讨论的这个呀
PHP-干不明白 18:22:33 
o
Sango 18:22:49 
热部署真是个银弹啊

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

29

2025.12.25

错误代码dns_probe_possible
错误代码dns_probe_possible

本专题整合了电脑无法打开网页显示错误代码dns_probe_possible解决方法,阅读专题下面的文章了解更多处理方案。

20

2025.12.25

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

37

2025.12.25

word转换成ppt教程大全
word转换成ppt教程大全

本专题整合了word转换成ppt教程,阅读专题下面的文章了解更多详细操作。

6

2025.12.25

msvcp140.dll丢失相关教程
msvcp140.dll丢失相关教程

本专题整合了msvcp140.dll丢失相关解决方法,阅读专题下面的文章了解更多详细操作。

2

2025.12.25

笔记本电脑卡反应很慢处理方法汇总
笔记本电脑卡反应很慢处理方法汇总

本专题整合了笔记本电脑卡反应慢解决方法,阅读专题下面的文章了解更多详细内容。

6

2025.12.25

微信调黑色模式教程
微信调黑色模式教程

本专题整合了微信调黑色模式教程,阅读下面的文章了解更多详细内容。

5

2025.12.25

ps入门教程
ps入门教程

本专题整合了ps相关教程,阅读下面的文章了解更多详细内容。

4

2025.12.25

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

218

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
18个Golang实战项目
18个Golang实战项目

共18课时 | 1.1万人学习

Python+微信小程序18天实战开发
Python+微信小程序18天实战开发

共206课时 | 13.4万人学习

Django DRF 源码解析
Django DRF 源码解析

共21课时 | 1.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号