什么是AOP
百度AOP解释
说人话
我看了
摘取里面一段话觉得说的很好
什么是 AOP
我个人理解为就是以前所谓的钩子
PHP AOP— 注解
注解在PHP本身其实就是注释,本身并无任何意思,都是给人看的。
为了实现注解,只能让机器也能看懂这个注释,从而达到我预期的效果。
目前 AOP 实现方式我个人总结有两种
- 以 PHP Parser 为首的 AST( 抽象语法树 ) 词法语法解析扩展来实现
- 使用反射类中的ReflectionClass的getDocComment,然后再结合反射来做
- AST
- php 代码解析阶段会把代码分词,然后使用AST进行语法分析,转成opcode, 再由zend引擎依次执行拆分好的opcode。所以我们可以在这个阶段作为切入点,在分词后,语法解析也把这段“特殊意义的注释”也让他一起解析,成熟的轮子目前比较出名的就是 PHP-Parser 作为一个php扩展引入后就可以愉快地与AOP玩游戏了
- 反射
通过反射类,读区文件中的注释, 我们定义一些特殊注释 比如 #@# 这个就为注解,在这个特殊符号后的 字符串 为注解类,然后就可以进行一系列操作,比如,这个注解类在正常类跑完才跑注解类的handle方法