1. 程式人生 > >tp5鉤子函式的用法與場景

tp5鉤子函式的用法與場景

先看tp5文件

行為標籤位
標籤位	描述
app_init	應用初始化標籤位
app_begin	應用開始標籤位
module_init	模組初始化標籤位
action_begin	控制器開始標籤位
view_filter	檢視輸出過濾標籤位
app_end	應用結束標籤位
log_write	日誌write方法標籤位
log_write_done	日誌寫入完成標籤位(V5.0.10+)
response_send	響應傳送標籤位(V5.0.10+)
response_end	輸出結束標籤位(V5.0.1+)

更詳細請直接看文件 Hook行為類

不多說,直接看用法

行為類的定義很簡單,定義行為的執行入口run,例如:
namespace app\xxx\xxx;
//此類不需要繼承任何類
class Test 
{
    public function run(&$params)
    {
        	echo 'hello world</br>';
    }
}
再定義另一個類
<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
use think\Hook;
class Hooktest extends Controller
{
	public function index()
	{
		echo "heiheihei";
	}
}
在app/tags.php指定行為
'app_init'     => ['app\index\controller\Test'],
執行
輸出
![輸出](https://img-blog.csdnimg.cn/20190111135617493.png)
動態配置
Hook::add('鉤子名稱','行為定義','是否優先執行');
use think\Hook;

Hook::add('app_init',[
	'\app\index\controller\Test',
]);
自定義鉤子
Hook::listen('鉤子名稱','引數(引用)','額外引數','是否一次有效返回值');

$result = Hook::listen('controller_init', $this, $request, true);