当前位置: 主页 > 业内 >

Go! 0.3.0 发布,PHP 的 AOP 库

时间:2013-05-28 09:16来源:www.oschina.net 作者:admin 点击:
Go! 0.3.0 支持动态 pointcuts;性能方面做了一些优化,特别是共享服务和延迟加载方面;Pointcuts 使用大小写敏感的匹配,可合并到复杂的 pointcut 中;对核心配置进行一些改动。 Go! 是一个
欢迎大家分享自己的文档,请点击查阅:分享方法,Linux系统运维
如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……


Go! 0.3.0 支持动态 pointcuts;性能方面做了一些优化,特别是共享服务和延迟加载方面;Pointcuts 使用大小写敏感的匹配,可合并到复杂的 pointcut 中;对核心配置进行一些改动。

Go! 是一个 PHP 5.4 库,让 PHP 支持 AOP 面向方面编程方法,无需 PECL 扩展、Runkit、evals 或者 DI 容器支持。可使用 XDebug 轻松调试。


 

示例代码:

01 // Aspect/MonitorAspect.php
02  
03 namespace Aspect;
04  
05 use Go\Aop\Aspect;
06 use Go\Aop\Intercept\FieldAccess;
07 use Go\Aop\Intercept\MethodInvocation;
08 use Go\Lang\Annotation\After;
09 use Go\Lang\Annotation\Before;
10 use Go\Lang\Annotation\Around;
11 use Go\Lang\Annotation\Pointcut;
12  
13 /**
14  * Monitor aspect
15  */
16 class MonitorAspect implements Aspect
17 {
18  
19     /**
20      * Method that will be called before real method
21      *
22      * @param MethodInvocation $invocation Invocation
23      * @Before("execution(public Example->*(*))")
24      */
25     public function beforeMethodExecution(MethodInvocation $invocation)
26     {
27         $obj $invocation->getThis();
28         echo 'Calling Before Interceptor for method: ',
29              is_object($obj) ? get_class($obj) : $obj,
30              $invocation->getMethod()->isStatic() ? '::' '->',
31              $invocation->getMethod()->getName(),
32              '()',
33              ' with arguments: ',
34              json_encode($invocation->getArguments()),
35              "<br>\n";
36     }
37 }

转载请注明linux系统运维
http://www.linuxyw.com/linux/yenei/2013/0528/482.html

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片