Thinkphp3.0正式版发布也有一段时间..之前用过1.X 2.X
3.0版还没有用过,最近有空去自己看了下官方的文档,并且研究了一下3.0的源码。
对框架里面的行为扩展模式很感兴趣于是就自己浅显的分析了一下。
TP3.0的核心框架里采用行为扩展模式主要是源于Aspect Oriented Programming(AOP),即面向切向的编程。
这样用户可以在不改变核心框架代码的情况下,通过自定义的行为扩展来自行组装和扩展框架的功能。
听起来似乎很玄乎也不太好理解.其实原理很简单。
1、首先 预定义一组行为扩展标签
例如 app_init ,app_begin 标签名称一般对应其含义,这里表示应用初始化和应用开始
2、为每个行为扩展标签定义一组行为类
例如
'app_begin'=>array(
'ReadHtmlCache', // 读取静态缓存
),
其中ReadHtmlCache 就是行为类的类名
3、在框架中,指定的代码片段处标记行为扩展标签.
例如 下面一段代码是应用开始的代码,那么在该段代码之前就通过tag函数来标记定义的行为扩展标签
tag('app_begin')
//..应用开始的代码...
上面三步就是行为扩展全部模式的全部了..原来很简单吧..
其核心就在于tag函数,个人理解有点类似JS里面的事件派发.
先定义好事件函数,然后执行到某个代码段就派发相应的事件。
这里就是先定义好对应的行为类,然后通过标记行为标签的方式去执行指定的行为类.
这样整个核心框架里很多功能就是通过不同的行为组装起来的.当需要定制框架时只需要
增加或者修改行为类,或者配置相应的行为扩展标签即可.
如果还是没办法理解那么去看看tag函数的源代码就可以明白究竟是怎么回事了.