博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tp5之行为监听、钩子行为的绑定与侦听
阅读量:5114 次
发布时间:2019-06-13

本文共 1479 字,大约阅读时间需要 4 分钟。

在应用或模块下建 behavior目录,目录内新建行为类文件 Test.php(以下以home模块为例)

namespace app\home\behavior;//注意应用或模块的不同命名空间class Test {    public function run(&$params){        echo $params;    }}

方法一

1.在入口文件中,增加: define('APP_HOOK',true);
2.home模块下建tags.php文件定义行为

return [    'app_init'=> [        'app\\home\\behavior\\Test', //注意行为的命名空间(下同)    ],    'zzzzz'=> [//自定义标签位        'app\\home\\behavior\\Test',    ],];

3.控制器方法内需要的地方侦听行为

\think\Hook::listen('app_init',$params);//参数为变量(下同)\think\Hook::listen('zzzzz',$params);//自定义

方法二

1.home模块的公共文件(common.php)或控制器方法内绑定行为到标签位

\think\Hook::add('app_init','app\\home\\behavior\\Test');\think\Hook::add('zzzz','app\\home\\behavior\\Test');//自定义

2.控制器方法内需要的地方侦听行为

\think\Hook::listen('app_init',$params);\think\Hook::listen('zzzzz',$params);//自定义

 方法三

在控制器方法内需要的地方直接执行行为

\think\Hook::exec('app\\home\\behavior\\Test','run',$params);

方法四

在控制器方法内直接使用闭包函数

$a='闭包函数';\think\Hook::add('zzzz',function($a){ var_dump($a);});\think\Hook::listen('zzzz',$a);

方法五

行为类绑定到多个标签
1.Test.php定义如下:

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)或控制器方法内绑定行为到标签位

\think\Hook::add('app_init','app\\home\\behavior\\Test');\think\Hook::add('app_end','app\\home\\behavior\\Test');

3.控制器方法内需要的地方侦听行为

\think\Hook::listen('app_init',$params);\think\Hook::listen('app_end',$params)

 

转载于:https://www.cnblogs.com/huoshantian/p/10676747.html

你可能感兴趣的文章
alter database databasename set single_user with rollback IMMEDIATE 不成功问题
查看>>
Repeater + Resources 列表 [原创][分享]
查看>>
WCF揭秘——使用AJAX+WCF服务进行页面开发
查看>>
【题解】青蛙的约会
查看>>
IO流
查看>>
mybatis调用存储过程,获取返回的游标
查看>>
设计模式之装饰模式(结构型)
查看>>
面向对象的设计原则
查看>>
Swift3.0服务端开发(三) Mustache页面模板与日志记录
查看>>
【转】 FPGA设计的四种常用思想与技巧
查看>>
EntityFrameWork 实现实体类和DBContext分离在不同类库
查看>>
新手算法学习之路----二叉树(在一个二叉查找树中插入一个节点)
查看>>
autopep8
查看>>
GIT在Linux上的安装和使用简介
查看>>
基于C#编程语言的Mysql常用操作
查看>>
s3c2440实验---定时器
查看>>
MyEclipse10安装SVN插件
查看>>
[转]: 视图和表的区别和联系
查看>>
Regular Experssion
查看>>
图论例题1——NOIP2015信息传递
查看>>