TP5的Hook應用場景:在某一個通用方法中,想加入自定義的功能,那就可以使用鉤子了
具體使用步驟:
第一步:在需要加入自定義代碼的地方創建一個監聽Hook(也就是下鉤子)
Hook::listen('action_checklogin');
如果有數據要傳給鉤子,那就使用下面的方法
$data=[];//這個數據可以是任何數據,如數據庫中查出來的數據,需要在鉤子中進行處理
Hook::listen('action_userlist',$data);
print_r($data);
第二步:寫具體的執行代碼
在項目的分組文件夾中創建behavior文件夾,然後放入一個Userdatachange.php文件,也就是鉤子需要調用的代碼
<?php
namespace app\admin\behavior;
class Userdatachange
{
public function run(&$data)
{
foreach($data as $k=>$v){
$data[$k]['addtime'] = date('Y-m-d',$v['addtime']); //只做一個對時間戳轉換的功能
}
}
}
?>
第三步:創建鉤子的映射關係,可以用兩種方法
第一種方法:在項目分組文件夾中創建tags.php文件,然後增加映射關係
// 應用行爲擴展定義文件
<?php
return [
'action_userlist' => ['app\admin\behavior\Userdatachange']
];
?>
第二種方法:在任何控制器或者全局控制器的構造函數中,動態創建映射關係,一般適用於通過數據庫配置好關係,在代碼中增加映射關係
function __construct(){
Hook::add('action_userlist','app\admin\behavior\Userdatachange');
}
以上就是鉤子的使用小心得,記錄一下。