在应用或模块下建 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 );
|
总结
以上所述是小编给大家介绍的Thinkphp5行为使用方法汇总,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:https://www.52bz.la/3523.html?utm_source=tuicool&utm_medium=referral