Thinkphp 框架擴展之行為擴展原理與實現(xiàn)方法分析
本文實例講述了Thinkphp 框架擴展之行為擴展原理與實現(xiàn)方法。分享給大家供大家參考,具體如下:
系統(tǒng)核心提供的標(biāo)簽位置包括下面幾個(按照執(zhí)行順序排列):
app_init | 應(yīng)用初始化標(biāo)簽位 |
path_info | PATH_INFO檢測標(biāo)簽位 |
app_begin | 應(yīng)用開始標(biāo)簽位 |
action_name | 操作方法名標(biāo)簽位 |
action_begin | 控制器開始標(biāo)簽位 |
view_begin | 視圖輸出開始標(biāo)簽位 |
view_parse | 視圖解析標(biāo)簽位 |
template_filter | 模板內(nèi)容解析標(biāo)簽位 |
view_filter | 視圖輸出過濾標(biāo)簽位 |
view_end | 視圖輸出結(jié)束標(biāo)簽位 |
action_end | 控制器結(jié)束標(biāo)簽位 |
app_end | 應(yīng)用結(jié)束標(biāo)簽位 |
在每個標(biāo)簽位置,可以配置多個行為定義,行為的執(zhí)行順序按照定義的順序依次執(zhí)行。除非前面的行為里面中斷執(zhí)行了(某些行為可能需要中斷執(zhí)行,例如檢測機器人或者非法執(zhí)行行為),否則會繼續(xù)下一個行為的執(zhí)行。 行為定義: 通過Common\Conf\tags.php配置文件定義,格式如下:
<?php return array( 'action_begin'=>array('Home\\Behaviors\\TestBehavior','Home\\Behaviors\\Test1Behavior'), );
上面注冊了兩個行為,分別是Home模塊下的test和test1行為,類文件位于Home模塊目錄下的Behaviors目錄,可以自定義目錄。
行為必須是一個包含命名空間路徑的類,如上的 Home\Behaviors\TestBehavior 對應(yīng)的類是 Home/Behaviors/TestBehavior.class.php。
除了這些系統(tǒng)內(nèi)置標(biāo)簽之外,開發(fā)人員還可以在應(yīng)用中添加自己的應(yīng)用標(biāo)簽。 比如在控制器的_initialize方法中:
\Think\Hook::add('action_begin','Home\\Behaviors\\TestBehavior'); //同時添加多個行為,只要將第二個參數(shù)換成數(shù)組即可。
行為類的定義,以上面的test行為為例:
<?php namespace Home\Behaviors; class TestBehavior extends \Think\Behavior{ //行為執(zhí)行入口 public function run(&$param){ } }
行為類建議繼承\Think\Behavior,必須實現(xiàn)run(&$param)
方法,行為是通過這個方法執(zhí)行的。
行為的觸發(fā): 只要在合適的地方通過以下代碼
\Think\Hook::listen('標(biāo)簽名'[,參數(shù)]); // 或者 // tag('標(biāo)簽名'[,參數(shù)]);
當(dāng)應(yīng)用執(zhí)行到這個地方的時候?qū)⒆詣佑|發(fā)指定標(biāo)簽名下的所有行為類。
isten方法可以傳入并且只接受一個參數(shù),如果需要傳入多個參數(shù),請使用數(shù)組,該參數(shù)為引用傳值,所以只能傳入變量。 參數(shù)可以被run(&$param)
中的$param
接收。
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計有所幫助。
- thinkphp 框架數(shù)據(jù)庫切換實現(xiàn)方法分析
- Thinkphp 框架配置操作之動態(tài)配置、擴展配置及批量配置實例分析
- Thinkphp 框架配置操作之配置加載與讀取配置實例分析
- Thinkphp 框架基礎(chǔ)之入口文件功能、定義與用法分析
- Thinkphp 框架基礎(chǔ)之源碼獲取、環(huán)境要求與目錄結(jié)構(gòu)分析
- Thinkphp 框架擴展之驅(qū)動擴展實例分析
- Thinkphp 框架擴展之應(yīng)用模式實現(xiàn)方法分析
- Thinkphp 框架擴展之Widget擴展實現(xiàn)方法分析
- Thinkphp 框架擴展之標(biāo)簽庫驅(qū)動原理與用法分析
- 淺談PHP之ThinkPHP框架使用詳解
相關(guān)文章
PHP中關(guān)于php.ini參數(shù)優(yōu)化詳解
在本篇文章里小編給大家整理的是關(guān)于PHP引擎php.ini參數(shù)優(yōu)化的相關(guān)知識點,有興趣的朋友們可以學(xué)習(xí)下。2020-02-02yii2中dropDownList實現(xiàn)二級和三級聯(lián)動寫法
本篇文章主要介紹了yii2中dropDownList實現(xiàn)二級和三級聯(lián)動寫法 ,非常具有實用價值,需要的朋友可以參考下2017-04-04Yii2中設(shè)置與獲取別名的函數(shù)(setAlias和getAlias)用法分析
這篇文章主要介紹了Yii2中設(shè)置與獲取別名的函數(shù)(setAlias和getAlias)用法,較為詳細的分析了別名的概念、用法及Yii中設(shè)置與獲取別名的具體實現(xiàn)方法,需要的朋友可以參考下2016-07-07