您好,登錄后才能下訂單哦!
這篇文章主要介紹“講解Thinkphp 框架擴展之行為擴展原理與實現方法”,在日常操作中,相信很多人在講解Thinkphp 框架擴展之行為擴展原理與實現方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”講解Thinkphp 框架擴展之行為擴展原理與實現方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
系統核心提供的標簽位置包括下面幾個(按照執行順序排列):
app_init | 應用初始化標簽位 |
path_info | PATH_INFO檢測標簽位 |
app_begin | 應用開始標簽位 |
action_name | 操作方法名標簽位 |
action_begin | 控制器開始標簽位 |
view_begin | 視圖輸出開始標簽位 |
view_parse | 視圖解析標簽位 |
template_filter | 模板內容解析標簽位 |
view_filter | 視圖輸出過濾標簽位 |
view_end | 視圖輸出結束標簽位 |
action_end | 控制器結束標簽位 |
app_end | 應用結束標簽位 |
在每個標簽位置,可以配置多個行為定義,行為的執行順序按照定義的順序依次執行。除非前面的行為里面中斷執行了(某些行為可能需要中斷執行,例如檢測機器人或者非法執行行為),否則會繼續下一個行為的執行。 行為定義: 通過Common\Conf\tags.php配置文件定義,格式如下:
<?php return array( 'action_begin'=>array('Home\\Behaviors\\TestBehavior','Home\\Behaviors\\Test1Behavior'), );
上面注冊了兩個行為,分別是Home模塊下的test和test1行為,類文件位于Home模塊目錄下的Behaviors目錄,可以自定義目錄。
行為必須是一個包含命名空間路徑的類,如上的 Home\Behaviors\TestBehavior 對應的類是 Home/Behaviors/TestBehavior.class.php。
除了這些系統內置標簽之外,開發人員還可以在應用中添加自己的應用標簽。 比如在控制器的_initialize方法中:
\Think\Hook::add('action_begin','Home\\Behaviors\\TestBehavior'); //同時添加多個行為,只要將第二個參數換成數組即可。
行為類的定義,以上面的test行為為例:
<?php namespace Home\Behaviors; class TestBehavior extends \Think\Behavior{ //行為執行入口 public function run(&$param){ } }
行為類建議繼承\Think\Behavior,必須實現run(&$param)
方法,行為是通過這個方法執行的。
行為的觸發: 只要在合適的地方通過以下代碼
\Think\Hook::listen('標簽名'[,參數]); // 或者 // tag('標簽名'[,參數]);
當應用執行到這個地方的時候將自動觸發指定標簽名下的所有行為類。
isten方法可以傳入并且只接受一個參數,如果需要傳入多個參數,請使用數組,該參數為引用傳值,所以只能傳入變量。 參數可以被run(&$param)
中的$param
接收。
到此,關于“講解Thinkphp 框架擴展之行為擴展原理與實現方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。