## 呆错钩子组件
* 呆错钩子组件主要作用是统一所有插件应用的钩子注册、钩子调用规则;开发者在开发插件应用时如需使用到钩子相关时需要按此规则进行开发。
## 钩子说明
* 钩子在DaiCuo框架中是一个很重要的功能,开发者通过预留的钩子可以对系统基础模块进行灵活的扩展与修改;呆错框架默认预留了一系列的钩子,统一放在(apps/common/behavior)目录下面。
* DaiCuo框架采用thinkphp5的行为扩展来完成钩子的需求,一个完整的钩子流程分为(注册/定义/调用),开发者在开发插件应用时可以参考TP手册的[钩子](https://www.kancloud.cn/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 执行某个标签行为