AOP使用

使用 Rap 可以在任何受 IOC管理的对象的前后,在不影响原有代码,原有模块的情况下插入代码逻辑,做到模块(代码)之间的低耦合;

使用AOP


实例:这里只是演示,正式项目需要自行组织好代码位置的

  1. class AppInit implements Init{
  2. public function appInit(AutoFindHandlerMapping $autoMapping, Router $router){
  3. //在UserLogic调用saveUser,delUser方法前调用UserLogicTestAop的testBefore方法
  4. AopBuild::before(UserLogic::class)
  5. ->methods(["saveUser","delUser"])
  6. ->wave(UserLogicTestAop::class)
  7. ->using("testBefore")
  8. ->addPoint();
  9. //在UserLogic调用方法以save或del开头的方法前调用UserLogicTestAop的testAfter方法
  10. AopBuild::after(UserLogic::class)
  11. ->methodsStart(["save","del"])
  12. ->wave(UserLogicTestAop::class)
  13. ->using("testAfter")
  14. ->addPoint();
  15. //在UserLogic调用方法saveUser后调用UserLogicTestAop调用回掉方法
  16. AopBuild::after(UserLogic::class)
  17. ->methods("saveUser")
  18. ->call(function (JoinPoint $point,$result){
  19. //执行逻辑 可以修改掉返回的数据哦
  20. return $result;
  21. })
  22. ->addPoint();
  23. }
  24. }

上一篇:AOP面向切面   下一篇:切面