Home > Backend Development > PHP Tutorial > PHP一个种AOP的实现

PHP一个种AOP的实现

WBOY
Release: 2016-06-13 11:35:49
Original
1381 people have browsed it

PHP一个类AOP的实现

由于项目有一个需求,需要在原来的代码上做一个封装.?由于不想修改原有代码,?查了一下,?PHP没有方便的支持AOP的方法,于是参考了网上一些文章,写了个包装器,?可以在不修改原有代码的基础上为函数添加before和after实现.

?
标签:
?

代码片段(3)[全屏查看所有代码]

1.?[代码]核心类?????

01 <?php
02 ?
03 /**
04 ?* 包装器(Wrapper).
05 ?* Wrapper是一个AOP_LIKE的实现. 也可以看作监听者模式的实现.
06 ?* 一个Wrapper报装了一个对象(source). source可以是任意对象(不包括数组及原子类型),甚至是一个Wrapper.
07 ?*
08 ?* 包装器可以任意添加饰品(Decoration).通过Wrapper调用source的函数的流程将是:
09 ?*? unpacking --> teardown --> open --> setup --> packing.
10 ?*
11 ?*? 例如调用source->doXX(),各个流程将是:
12 ?*? unpacking:? 解包. 这是调用任意source的函数都会调用的方法;
13 ?*? teardown:?? 撕掉饰品. 对于Wrapper中的每个Decoration,调用其before()函数;
14 ?*? open:?????? 真正调用source->doXX()函数;
15 ?*? setup:????? 重新贴上饰品. 对于Wrapper中的每个Decoration,调用其after()函数;
16 ?*? packing:??? 重新打包.? 这是调用任意source的函数都会调用的方法;
17 ?*
18 ?*/
19 class?Wrapper{
20 ????private?$source;
21
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template