【Thinkphp5钩子与行为小实例】主要分为三个功能点:
一:行为定义
方法1,一般写在behaviour文件夹,例如 app\index\behavior\Actionlist 类
/*
* 测试行为类
*/namespace app\index\behavior;
/**
* Description of Actionlist
* Date 2018年2月8日 18:16:32
* @author Carter
*/class Actionlist {//run为行为的默认执行类,在有和行为标签相同名字的方法名情况下,不执行run,执行与行为标签同名的方法,方法名为行为标签名的驼峰写法,比如app_init 对应appInit()public function run(){
dump('aaa');
}public function appInit(){
dump('bbbb');
}}
方法2,闭包支持(添加行为标签时直接调用方法)
//钩子与行为
public function index4(){Hook::add('action_list',function(){
dump('1111');
});
Hook::listen('action_list');
}
二:行为绑定(钩子绑定行为) 方法1,一般在应用目录和模块目录下面的tags.php里写入行为标签与行为的关联
//测试绑定
'action_list' => [
'app\\index\\behavior\\Actionlist'
],
方法2,在程序里直接添加程序绑定
Hook::add('action_list','app\\index\\behavior\\Actionlist');
三:钩子放置
Hook::listen('action_list');
//在需要调用行为的位置,放置钩子监听调用
推荐阅读
- 【2022/02/02】thinkphp源码无差别阅读(三十五)
- 【2022/01/31】thinkphp源码无差别阅读(三十四)
- 【2022/01/31】thinkphp源码无差别阅读(三十三)
- 【2022/01/29】thinkphp源码无差别阅读(三十一)
- 【2022/01/27】thinkphp源码无差别阅读(三十)
- 【2022/01/24】thinkphp源码无差别阅读(二十八)
- 【2022/01/23】thinkphp源码无差别阅读(二十七)
- 【2022/01/22】thinkphp源码无差别阅读(二十六)
- 【2022/1/16】thinkphp源码无差别阅读(二十一)
- 【2022/1/15】thinkphp源码无差别阅读(二十)