AOP使用
使用 Rap 可以在任何受 IOC管理的对象的前后,在不影响原有代码,原有模块的情况下插入代码逻辑,做到模块(代码)之间的低耦合;
使用AOP
实例:这里只是演示,正式项目需要自行组织好代码位置的
class AppInit implements Init{
public function appInit(AutoFindHandlerMapping $autoMapping, Router $router){
//在UserLogic调用saveUser,delUser方法前调用UserLogicTestAop的testBefore方法
AopBuild::before(UserLogic::class)
->methods(["saveUser","delUser"])
->wave(UserLogicTestAop::class)
->using("testBefore")
->addPoint();
//在UserLogic调用方法以save或del开头的方法前调用UserLogicTestAop的testAfter方法
AopBuild::after(UserLogic::class)
->methodsStart(["save","del"])
->wave(UserLogicTestAop::class)
->using("testAfter")
->addPoint();
//在UserLogic调用方法saveUser后调用UserLogicTestAop调用回掉方法
AopBuild::after(UserLogic::class)
->methods("saveUser")
->call(function (JoinPoint $point,$result){
//执行逻辑 可以修改掉返回的数据哦
return $result;
})
->addPoint();
}
}