## 呆錯鉤子組件
* 呆錯鉤子組件主要作用是統一所有插件應用的鉤子注冊、鉤子調用規則;開發者在開發插件應用時如需使用到鉤子相關時需要按此規則進行開發。
## 鉤子說明
* 鉤子在DaiCuo框架中是一個很重要的功能,開發者通過預留的鉤子可以對系統基礎模塊進行靈活的擴展與修改;呆錯框架默認預留了一系列的鉤子,統一放在(apps/common/behavior)目錄下面。
* DaiCuo框架采用thinkphp5的行為擴展來完成鉤子的需求,一個完整的鉤子流程分為(注冊/定義/調用),開發者在開發插件應用時可以參考TP手冊的[鉤子](http://www.hmoore.net/manual/thinkphp5/118130)篇。
## 鉤子注冊 / 行為標簽位
* 方法1:直接在apps/自定義模塊/tags.php里面定義 可參考apps/index/tags.php
* 方法2:在需要使用鉤子的控制器里直接注冊(如:\\think\\Hook::add('app\_init','app\\index\\behavior\\CheckLang');)
* 方法3:在控制器方法內需要的地方直接執行行為(如:\\think\\Hook::exec('app\\home\\behavior\\Test','run',$params);)
## 鉤子定義 / 行為定義
通過以上任一方法注冊了鉤子后,第二步需要的就是邏輯開發,以apps/common/hook/*.php為系統默認的鉤子定義,實例如下:
```
namespace app\index\behavior;
class Test
{
public function appInit(&$params)
{
}
}
```
## 調用鉤子/ 行為綁定
* 方法1:在控制器里需要調用的位置監聽即可,\\think\\Hook::listen('action\_init',$params);
* 方法2:在控制器里直接執行,\\think\\Hook::exec('app\\index\\behavior\\CheckAuth','run',$params);
## 預埋鉤子
* form_validate 數據驗證鉤子,可覆蓋默認的表單驗證機制
* hook_save_before 數據添加前
* hook_save_after 數據添加后
* hook_delete_before 數據刪除前
* hook_delete_after 數據刪除后
* hook_update_before 數據更新前
* hook_update_after 數據更新后
* hook_get_before 讀取單個數據前
* hook_get_after 讀取單個數據后
* hook_all_before 批量讀取多個數據前
* hook_all_after 批量讀取多個數據后
## 助手函數
* DcHookAdd 動態添加行為擴展到某個標簽
* DcHookListen 監聽標簽的行為
* DcHookExec 執行某個標簽行為