# 行为和钩子
1.系统定义钩子顺序
| 钩子| 描述 |参数 |
| --- | --- | --- |
| app_init | 应用初始化标签位 | 无 |
| app_begin | 应用开始标签位 | 当前调度信息 |
| module_init | 模块初始化标签位 | 当前请求对象实例 |
| action_begin | 控制器开始标签位 | 当前的callback参数 |
| view_filter | 视图输出过滤标签位 | 当前模板渲染输出内容 |
| app_end | 应用结束标签位 | 当前响应对象实例 |
| response_end | 输出结束标签位(V5.0.1+) | 当前响应对象实例 |
| log_write | 日志write方法标签位 | 当前写入的日志信息 |
### 1.如何监听
~~~
Hook::listen('钩子名称','参数(引用)','额外参数','是否一次有效返回值');
~~~
### 2.监听系统钩子
~~~
Hook::listen('module_init', $request);
~~~
### 3.demo
3.1定义行为
~~~
namespace app\demo\behavior;
class Hello
{
public function run(){
echo "hello world"."<br/>";
}
}
~~~
3.2配置tags指向行为
~~~
return [
'app_init'=>[
'app\demo\behavior\Hello',
],
];
~~~
3.3新建控制器
~~~
namespace app\demo\controller;
class Index extends Base
{
public function index(){
echo "this is index!";
}
}
~~~
输出
hello world;
this is index!
### 4.demo2
4.1修改行为 3.1 改成
~~~
namespace app\demo\behavior;
class Hello
{
public function run(){
echo "hello world"."<br/>";
}
public function appInit(){
echo "this is app_init";
}
}
~~~
输出
this is app_init;
this is index!
### 5.动态配置
~~~
Hook::add('钩子名称','行为定义','是否优先执行');
~~~
~~~
use think\Hook;
Hook::add('app_init',[
'\app\demo\behavior\Hello',
]);
~~~
### 6.自定义钩子
~~~
$result = Hook::listen('controller_init', $this, $request, true);
~~~
- tp5
- thinkphp5Auth教程
- thinkphp5Auth类
- thinkphp5钩子详解
- 多语言
- 日常函数记录
- register_shutdown_function
- number_format
- call_user_func
- call_user_func_array
- parse_str
- php数组
- chdir
- strtr
- pathinfo
- version_compare
- func_get_args
- stristr
- 常用环境变量
- php字符串操作
- php文件操作
- php时间操作
- phpcli
- php 替换
- php错误函数
- mysql
- from_unixtime
- 日期类型
- mysql 优化
- if
- 常用类
- 前端
- Seaslog日志
- composer
- 大型网站提速关键技术
- php插件机制
- 微信
- 每天一个linux
- memcache笔记
- 昂捷ERP笔记
- redis
- sphinex
- 我的学习路径
- php技术杂项
- php反射
- php闭包
- php正则
- apache 重写规则
- php异常处理
- php错误处理
- php ob缓存
- php 解析xml
- php curl介绍
- lamp
- lnmp
- http
- http缓存控制
- php命令行
- svn
- git
- mssql
- xml