什么是行為:
可以將行為理解為是一個行為類的方法,在框架中行為類、行為方法則是有一定的規則約定;而鈎子則是這些行為方法被調用執行的位置點。注意了,要想執行某個鈎子中的行為,那行為一定要在應用程序執行到該鈎子之前進行綁定
特點:
-
一個鈎子可以綁定多個行為,執行到某個鈎子位置后,會按照綁定的順序依次執行相關的行為。
-
在某種特殊情況下,可以設置某個鈎子只能執行一次行為,或者是設置在一個鈎子的某個行為返回false來強制終止后續的行為執行。
-
一個行為同樣可以被綁定到多個不同鈎子。
官方預定義了一些鈎子,方便我們在程序中直接使用,在application目錄下的tag.php中,我們只需要在對應的鈎子下綁定行為即可生效,例如:
// 應用初始化 'app_init' => ['\\app\\index\\behavior\\Test'],
當程序初始化時會執行 \app\index\behavior\Test 類的 run 方法
我們也可以自定義鈎子,在tag.php中添加自定義鈎子
'my_action' => ['\\app\\index\\behavior\\Test'],
然后在程序對應的位置監聽這個鈎子,當程序執行到這里是會自動觸發鈎子
public function hello($name = 'ThinkPHP5') { \think\facade\Hook::listen("my_action"); return 'hello,' . $name; }