在应用或模块下建 behavior目录,目录内建行为类文件Test.PHP(以下以home模块为例)
1
2
3
4
5
6
7
|
namespace app/home/behavior; //注意应用或模块的不同命名空间 class Test { public function run(& $params ) { echo $params ; } } |
方法一
1.在入口文件中,增加: define(‘APP_HOOK’,true);
2.home模块下建tags.PHP文件定义行为
1
2
3
4
5
6
7
8
|
return [ 'app_init' => [ 'app//home//behavior//Test' , //注意行为的命名空间(下同) ], 'zzzzz' => [ //自定义标签位 'app//home//behavior//Test' , ], //................. ]; |
3.控制器方法内需要的地方侦听行为
1
|
/think/Hook::listen( 'app_init' , $params ); //参数为变量(下同) /think/Hook::listen('zzzzz',$params);//自定义 |
方法二
1.home模块的公共文件(common.PHP)或控制器方法内绑定行为到标签位
1
|
/think/Hook::add( 'app_init' , 'app//home//behavior//Test' ); /think/Hook::add( 'zzzz' , 'app//home//behavior//Test' );//自定义 |
2.控制器方法内需要的地方侦听行为
1
|
/think/Hook::listen( 'app_init' , $params ); /think/Hook::listen( 'zzzzz' , $params ); //自定义 |
方法三
在控制器方法内需要的地方直接执行行为
1
|
/think/Hook:: exec ( 'app//home//behavior//Test' , 'run' , $params ); |
方法四
在控制器方法内直接使用闭包函数
1
|
$a = '闭包函数' ; /think/Hook::add( 'zzzz' , function ( $a ){ var_dump( $a );}); /think/Hook::listen( 'zzzz' , $a ); |
方法五
行为类绑定到多个标签
1.Test.PHP定义如下:
1
2
3
4
5
6
7
|
namespace app/home/behavior; class Test { public function app_init(& $params ){ echo 'app_init' ; } public function app_end(& $params ){ echo 'app_end' ; } } |
2.home模块的公共文件(common.PHP)或控制器方法内绑定行为到标签位
1
2
|
/think/Hook::add( 'app_init' , 'app//home//behavior//Test' ); /think/Hook::add( 'app_end' , 'app//home//behavior//Test' ); |
3.控制器方法内需要的地方侦听行为
1
|
/think/Hook::listen( 'app_init' , $params ); /think/Hook::listen( 'app_end' , $params ); |
原文链接:https://www.52bz.la/3523.html?utm_source=tuicool&utm_medium=referral
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容