龙空技术网

记一则关于PHP的AOP

秋名山吴师傅 853

前言:

目前朋友们对“php aop 实现原理”可能比较珍视,同学们都想要剖析一些“php aop 实现原理”的相关资讯。那么小编也在网络上网罗了一些对于“php aop 实现原理””的相关文章,希望看官们能喜欢,看官们一起来学习一下吧!

什么是AOP

百度AOP解释

说人话

我看了

摘取里面一段话觉得说的很好

什么是 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方法

标签: #php aop 实现原理 #php注释符号有哪些 #php总结1500字 #phpaop #php aop使用