支持属性AOP模式之前,Xaop仅支持方法的切入(文档注释注解模式 与 方法注入两种模式的 AOP),现在已经支持属性的AOP啦,下面来一个demo示例:
class Swing { public $di; } Xaop::addPropertyBeforeReadAop(Swing::class, "di", function($object, $prop){ var_dump($object, $prop); echo 'hello'; }); Xaop::addPropertyAfterReadAop(Swing::class, "di", function(){ echo 'afterRead'; }); $swing = new Swing(); $swing->di;
属性切入AOP模式下,回调函数支持匿名函数与数组模式的回调函数也就是如下两种模式都支持:
Xaop::addPropertyBeforeReadAop(Swing::class, "di", function($object, $prop){ var_dump($object, $prop); echo 'hello'; }); Xaop::addPropertyBeforeReadAop(Swing::class, "di", [ Swing::class, "_before" ]);
回调函数包含有两个参数: $object , $propertyName 分别表示 属性所属的类的对象 与 属性方法名称。
在属性AOP模式下,没有实现环绕模式的原因在于考虑到可以使用魔术方法 "__get" 与 "__set" 来实现,因此业务上可以避免两次问题。