浮叶蓝空的博客
分享学习心得,记录学习笔记
文章:
84
访问:
526150
登录
关于
首页
今天是:
2025年09月09日 星期二
类别
PHP(39)
其他笔记(20)
Java(1)
C++(17)
mysql(2)
JavaScript(4)
近期文章
Linux下Cmake引用第三方静态库示例
Linux下使用Cmake构建静态库示例
Ubuntu设置自动挂载硬盘,挂载U盘
压力测试工具Apache JMeter基本使用
使用PHP脚本借助FFmpeg一键合并视频
Shell中的>、1>、2>、2>&1、&>详解
PHP开启多进程实现异步非阻塞并行执行任务
博主推荐
PHP实现文件下载接口
Qt读写注册表,C++读写注册表
PHP动态修改配置文件,存储为文件
MySql常用语法
Powershell远程连接
PHP从字符串中获取需要的内容部分
封装PHP的HTTP请求
Thinkphp Hook 钩子
fuyelk
2019年10月21日
3165
## Thinkphp Hook 钩子 > 参考资料:ThinkPHP5.0完全开发手册:https://www.kancloud.cn/manual/thinkphp5/118130 通过ThinkPHP的开发手册学习了下ThinkPHP的行为功能,下面是学习笔记。 行为操作就像调试时候打log(标签位)一样,执行到锚点了就触发一个操作(行为),行为出错不会影响程序的整体运行。 过程: 1. 系统执行的所有操作都可以归类为行为,具体怎么归类开发者自己定。比如:用户注册前用户名校验、登录成功后记录日志等等。 2. 触发行为的地方叫做“标签位”,系统执行到标签位就触发这个标签位对应的行为内容。ThinkPHP自带有这几个标签位: | 标签位 | 描述 | | :------------ | :------------ | | 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+)| 3.“标签位”也可以由我们指定,用\think\Hook类的listen方法 ``` Hook::listen(‘say_hello’); ``` 允许传递一个参数,由于这个参数是引用传值,因此必须是变量 ``` Hook::listen(‘say_hello’,$params); ``` 4.定义标签位之后,还需要定义“行为” 写一个类,包含一个方法run即可 ``` namespace app\index\behavior; class Mybehavior { public function run(&$params) { echo “Hello”; } } ``` 如果行为类中要写多个标签这样写(标签名采用驼峰命名),执行行为时会自动根据标签位名找到对应方法 ``` namespace app\index\behavior; class Mybehavior { public function sayHello(&$params) { echo “Hello”; } public function sayGoodbye(&$params) { echo “goodbye”; } } ``` 5.有了“标签位”,有了“行为”,还需要将二者绑定到一起,用\think\Hook类的add方法(绑定到类即可) ``` Hook::add(‘say_hello’,‘app\index\behavior\Mybehavior’); ``` 也可以批量绑定 ``` Hook::add(‘speak_something’,[‘app\index\behavior\Mybehavoir‘,‘app\index\behavior\Mybehavior‘]); ``` 支持闭包 ``` Hook::add(‘say_hello’,function(){ echo ‘Hello’; }); ``` 还可以更简单,在APP目录下面或者模块下面用tags.php ``` return [ ‘say_hello’=> [ ‘app\index\behavior\Mybehavior‘, ], ‘say_goodbye’=> [ ‘app\admin\behavior\Mybehavoir‘ ] ]; ``` 当运行的行为出错时会返回false,行为终止,但是应用继续 结束!
上一篇:
后台自定义消息通知
下一篇:
指定项目目录,提取代码
0人点赞
登录后评论
友情链接
doywb
2018-2025 Copyright© 米灵尔 浮叶蓝空
豫ICP备15007436号-1
豫公网安备 41152302000146号