PHP的AOP实现

来源:互联网 发布:python 指定路径模块 编辑:程序博客网 时间:2024/06/11 08:55

AOP(Aspect oriented programming),即面向切面编程,它可以向现有代码(通知)中添加附加行为,不需要修改代码本身,而是指定其他代码通过“切入点”进行修改。在实现上主要是采用动态代理和静态织入,动态代理利用拦截消息的方式,对消息进行装饰,取代了原有对象的行为;静态织入及使用特定的语法创建方面,从而使得编译器可以在编译器件引入相关“方面”的代码。

Java的spring AOP框架采用运行时动态地、在内存中临时生成“代理类”的方式来生成 AOP 代理。

例如,现在有如下要求:如果调用某逻辑代码块的函数的名字以“set”关键字开头,则在日志文件中加入一条记录。 利用AOP思想,可以允许不将次要业务逻辑(例如日志记录)的行为添加到中心程序中,而不至于使核心代码的功能被混乱。

理解技巧:说到切面,大家很容易的就想到了几何学里的横截面,把对象(或某业务逻辑)想象成一圆柱体,那么进入到这个对象和离开这个对象时都必须经过这个截面。我们谈面向切面编程就是非侵入式编程,仅在切面处做文章。是一种将次要业务从主业务中解耦的手段。具体说来,就是当次要业务的逻辑【代码】改动时,主要业务逻辑【代码】尽量少的改动。常见的日志纪录、身份验证、权限检查、临时数据保存到数据库、同步操作等。

https://pecl.php.net/package/AOP