资讯专栏INFORMATION COLUMN

PHP-AOP扩展

fasss / 2260人阅读

摘要:可以实现非常好的模块低耦合。未来如果增加了新的模块,比如。这种做法显然是侵入性的。但远没有强大,而且还需要不断加入的遍历点。如果编程的话,只需要外部注入一个函数,执行时,就会执行指定的代码。

项目地址:http://pecl.php.net/package/AOP

首先介绍下AOP编程,也叫做面向切面编程,是一种非侵入式编程的方法,采用外部注入的方式来取代嵌入代码。可以实现非常好的模块低耦合。

假设你的框架有一个 Frameworkd::init方法,功能是初始化框架资源。现在有db,template的初始化也需要在这个阶段执行,传统的做法就是只能修改 Framework::init在里面加入 db,template的方法调用。未来如果增加了新的模块,比如cache。那就需要修改Frameworkd::init的代码。这种做法显然是侵入性的。

当然也可以用hook list的方式来实现。在需要外部注入的地方加入一个hook list,遍历执行外部注入的接口。但远没有AOP强大,而且还需要不断加入hook list的遍历点。

如果AOP编程的话,只需要外部注入一个函数,执行 Framework::init时,就会执行指定的代码。

doAdmin*()", "adviceForDoAdmin");
aop_add_after("MyServices->doAdmin*()", "adviceForDoAdmin2");
$o = new MyServices;
$o->doAdminStuff1();
$o->doAdminStuff2();

执行结果:

Calling doAdminStuff1
AOP[2] Run
AOP[1] Run
Calling doAdminStuff2
AOP[2] Run
AOP[1] Run

转自http://rango.swoole.com/archi...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29298.html

相关文章

  • 聊聊Dubbo - Dubbo可扩展机制实战

    摘要:今天我想聊聊的另一个很棒的特性就是它的可扩展性。的扩展机制在的官网上,描述自己是一个高性能的框架。接下来的章节中我们会慢慢揭开扩展机制的神秘面纱。扩展扩展点的实现类。的定义在配置文件中可以看到文件中定义了个的扩展实现。 摘要: 在Dubbo的官网上,Dubbo描述自己是一个高性能的RPC框架。今天我想聊聊Dubbo的另一个很棒的特性, 就是它的可扩展性。 Dubbo的扩展机制 在Dub...

    techstay 评论0 收藏0
  • Yii修行之路 - Extension 扩展

    摘要:运行来安装指定的扩展。这更便于用户辨别是否是的扩展。当用户运行安装一个扩展时,文件会被自动更新使之包含新扩展的信息。上述代码表明该扩展依赖于包。例如,上述的条目声明将对应于别名。为达到这个目的,你应当在公开发布前做测试。 简述 扩展是专门设计的在 Yii 应用中随时可拿来使用的, 并可重发布的软件包。 基础 例如, yiisoft/yii2-debug 扩展在你的应用的每个页面底部添加...

    bovenson 评论0 收藏0
  • MySQL - 扩展性 1 概述:人多未必力量大

    摘要:容量和可扩展性并不依赖于性能。容量是车道乘以最大安全时速。至此,关于扩展性的概念描述告一段落。但现实是诶,小九啊,咱们系统提升下性能要多久啊三天应该差不多了吧,最多不能超过一周,上次提升性能,小六一天就搞定了的。 我们应该接触过或者听说过数据库的性能瓶颈问题。对于一个单机应用而言,提升数据库性能的最快路径就是氪金 - 买更高性能的数据库服务器,只要钱到位,性能不是问题。 但是当系统性能...

    Cciradih 评论0 收藏0
  • MySQL - 扩展性 1 概述:人多未必力量大

    摘要:容量和可扩展性并不依赖于性能。容量是车道乘以最大安全时速。至此,关于扩展性的概念描述告一段落。但现实是诶,小九啊,咱们系统提升下性能要多久啊三天应该差不多了吧,最多不能超过一周,上次提升性能,小六一天就搞定了的。 我们应该接触过或者听说过数据库的性能瓶颈问题。对于一个单机应用而言,提升数据库性能的最快路径就是氪金 - 买更高性能的数据库服务器,只要钱到位,性能不是问题。 但是当系统性能...

    null1145 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<