japanese少妇高潮潮喷 -精品国产AV一区二区三区-麻豆av一区二区三区久久-国产精品无码专区

平時網站項目采用thinkphp5.1有必要用鉤子、行為和中間件嗎?

發布時間:2025-04-19 點擊:15
thinkpphp中的鉤子和行為放在一起說,說因為他們兩個是結合在一起用的,行為主要指的是我們需要執行的一些邏輯操作。下面列舉一些常見的應用場景:
1、網站后臺管理的每一個頁面都需要進行身份和權限驗證,這時候可以在項目中用一個鉤子,在頁面生命周期事件action_begin中插入一個事件用于執行驗證行為。
2、當網站項目需要維護時,用戶打開每一個頁面顯示維護信息,這時候可以在頁面生命周期app_init中插入一個事件,顯示維護信息和終止其他生命事件的執行。
3、加載一下公用的數據,只需要在action執行的事件之前加載數據,頁面action操作時就可以直接使用數據。
4、頁面執行完畢,進行一些臨時的特殊的頁面內容輸出替換??梢栽趘iew_filter事件中操作。
5、對每一個頁面做一些特殊的監控,可以在app_end或者response_end事件中加入操作邏輯。
除了以上列舉的,還有很多應用場景。
如果不使用鉤子,可以嗎?答案是肯定的,除了用最笨的方法(在每一個操作前都加段代碼)外,還可以定義一個基礎控制器類,然后其他所有控制器都繼承這個基礎類,從而實現上訴功能。
但是鉤子有個特別的地方是,代碼是放在其他地方,管理方便,同時更加方便在每個生命周期插入事件,更加方便。
app_init 應用初始化標簽位 無參數
app_dispatch 應用調度標簽位 無參數
app_begin 應用開始標簽位 無參數
module_init 模塊初始化標簽位 無參數
action_begin 控制器開始標簽位 當前的callback參數
view_filter 視圖輸出過濾標簽位 當前模板渲染輸出內容
app_end 應用結束標簽位 當前響應對象實例
log_write 日志write方法標簽位 當前寫入的日志信息
log_write_done 日志寫入完成標簽位
response_send 響應發送標簽位 當前響應對象
response_end 輸出結束標簽位 當前響應對象實例
需要注意的是:其中log_write鉤子僅在調用log::write方法的時候執行。
view_filter鉤子v5.1.3+版本中已經廢除,改用視圖類的filter方法過濾。

如下定義事件示例如下
return [
// 應用初始化
'app_init' => [
'app\\test\\behavior\\appinit'
],
// 應用開始
'app_begin' => [
'app\\test\\behavior\\appbegin'
],
// 模塊初始化
'module_init' => [
'app\\test\\behavior\\moduleinit'
],
// 操作開始執行
'action_begin' => [
'app\\test\\behavior\\actionbegin'
],
// 視圖內容過濾
'view_filter' => [
'app\\test\\behavior\\viewfilter'
],
// 日志寫入
'log_write' => [
'app\\test\\behavior\\logwrite'
],
// 應用結束
'app_end' => [
'app\\test\\behavior\\append'
],
];
中間件是用于攔截或過濾應用的http請求,并進行必要的業務處理,是5.1.16+才增加的功能,可以通過路由單獨控制器定義,也可以全局定義,使用非常方便。



延慶網站建設公司_網絡推廣seo公司
網站建設企業發展需結合自身實際情況
網店沒流量沒客戶?排名上不去?怎么辦?
網站建設中的幾大誤區
菏澤網站優化原創文章不被搜索引擎收錄的原因有哪些?
網站建設專家-無代碼基礎如何建站?
pHp模板系統不像其它的視圖中使用任何第三方的性能
什么域名比較好?