浅析Thinkphp3.0的行为扩展模式
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
Thinkphp3.0正式版發(fā)布也有一段時間..之前用過1.X?2.X?
3.0版還沒有用過,最近有空去自己看了下官方的文檔,并且研究了一下3.0的源碼。
對框架里面的行為擴展模式很感興趣于是就自己淺顯的分析了一下。
TP3.0的核心框架里采用行為擴展模式主要是源于Aspect?Oriented?Programming(AOP),即面向切向的編程。
這樣用戶可以在不改變核心框架代碼的情況下,通過自定義的行為擴展來自行組裝和擴展框架的功能。
聽起來似乎很玄乎也不太好理解.其實原理很簡單。
1、首先?預定義一組行為擴展標簽
例如?app_init?,app_begin?標簽名稱一般對應(yīng)其含義,這里表示應(yīng)用初始化和應(yīng)用開始
2、為每個行為擴展標簽定義一組行為類
例如?
'app_begin'=>array(
????????'ReadHtmlCache',?//?讀取靜態(tài)緩存
????),
其中ReadHtmlCache?就是行為類的類名
3、在框架中,指定的代碼片段處標記行為擴展標簽.
例如?下面一段代碼是應(yīng)用開始的代碼,那么在該段代碼之前就通過tag函數(shù)來標記定義的行為擴展標簽
tag('app_begin')
//..應(yīng)用開始的代碼...
上面三步就是行為擴展全部模式的全部了..原來很簡單吧..
其核心就在于tag函數(shù),個人理解有點類似JS里面的事件派發(fā).
先定義好事件函數(shù),然后執(zhí)行到某個代碼段就派發(fā)相應(yīng)的事件。
這里就是先定義好對應(yīng)的行為類,然后通過標記行為標簽的方式去執(zhí)行指定的行為類.
這樣整個核心框架里很多功能就是通過不同的行為組裝起來的.當需要定制框架時只需要
增加或者修改行為類,或者配置相應(yīng)的行為擴展標簽即可.
如果還是沒辦法理解那么去看看tag函數(shù)的源代碼就可以明白究竟是怎么回事了.
轉(zhuǎn)載于:https://my.oschina.net/jiuxiaoyao/blog/76576
總結(jié)
以上是生活随笔為你收集整理的浅析Thinkphp3.0的行为扩展模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Magento调用静态块 static
- 下一篇: java reflect 例子