说人话
我看了
摘取里面一段话以为说的很好
什么是 AOP
再说 AOP 之前,肯定都知道 OOP 是什么,面向工具编程。那么 AOP 便是 面向切面编程,通过预编译办法或运行期动态代理等技能实现程序功能的统一掩护的一种技能。OOP 是针对业务处理过程的实体及其属性和行为进行抽象和封装,以得到更加清晰高效的逻辑单元划分AOP 则是针对业务处理过程中的切面进行提取,它所面对的是处理过程的某个步骤或某个阶段,以得到逻辑过程中各部分之间低耦合性的隔离效果
我个人理解为便是以前所谓的钩子PHP AOP— 表明
表明在PHP本身实在便是注释,本身并无任何意思,都是给人看的。为了实现表明,只能让机器也能看懂这个注释,从而达到我预期的效果。目前 AOP 实现办法我个人总结有两种
以 PHP Parser 为首的 AST(抽象语法树) 词法语法解析扩展来实现利用反射类中的ReflectionClass的getDocComment,然后再结合反射来做ASTphp 代码解析阶段会把代码分词,然后利用AST进行语法剖析,转成opcode, 再由zend引擎依次实行拆分好的opcode。以是我们可以在这个阶段作为切入点,在分词后,语法解析也把这段“分外意义的注释”也让他一起解析,成熟的轮子目前比较出名的便是 PHP-Parser 作为一个php扩展引入后就可以愉快地与AOP玩游戏了反射通过反射类,读区文件中的注释, 我们定义一些分外注释 比如 #@# 这个就为表明,在这个分外符号后的字符串为表明类,然后就可以进行一系列操作,比如,这个表明类在正常类跑完才跑表明类的handle方法