thinkPHP中钩子的使用方法实例分析


Posted in PHP onNovember 16, 2017

本文实例讲述了thinkPHP中钩子的使用方法。分享给大家供大家参考,具体如下:

前面介绍过thinkPHP中钩子的两种配置调用方法,这里来进一步分析一下钩子的使用方法。

1 创建钩子行为:

我们自己定义的标签位可以直接放在Think\Behaviors中,也可以放在应用目录中,比如说Home模块下,新建一个Behaviors的文件夹,在文件夹内新建

标签名+Behavior.class.PHP

注:需要带Behavior的原因,见代码:

static public function exec($name, $tag,&$params=NULL) {
    if('Behavior' == substr($name,-8) ){
      // 行为扩展必须用run入口方法
      $tag  =  'run';
    }
    $addon  = new $name();
    return $addon->$tag($params);
}

在这里我自己自定义的标签名是My

namespace Behavior;
use Think\Behavior;
class MyBehavior extends Behavior
{
  public function run(&$arg){
    echo 'Thinkphp 中的'.$arg['name'].'功能,'.$arg['value'].'中...';
  }
}

注意类名大小写

2 将钩子添加进钩子集中

方法一(手动注册):直接在控制器中添加:

Hook::add('addd','Behavior\\adBehavior');

方法二(自动注册):

在Conf文件夹里面(完整路径D:\think\application\Home\Conf\tags.php,当然这是我的情况)tags.php的内容:

return array(
//'action_begin'=>array('Home\\Behaviors\\test','Home\\Behaviors\\test'),
 //一个标签位可以有多个行为,使用数组即可。
 // 如果是3.2.1版本 则需要改成
 // 'action_begin'=>array('Home\\Behaviors\\testBehavior','Home\\Behaviors\\testBehavior'),
 'my'=>array('Behaviors\\MyBehavior')
);

3 添加监听:(我这里才用模板中直接监听使用)

此处如果报找不到hook方法,请在ThinkPHP/Common/functions.php中添加(当然也可以在其他公共文件):

function hook($hook,$params= array()){
  \Think\Hook::listen($hook,$params);
}

最后在模板中使用:

{:hook('my', array('name'=>'钩子','value'=>'学习'))}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP新手上路(十一)
Oct 09 PHP
php下载远程文件类(支持断点续传)
Nov 14 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
国外十大最流行的PHP框架排名
Jul 04 PHP
php基于表单密码验证与HTTP验证用法实例
Jan 06 PHP
PHP随机数 C扩展随机数
May 04 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
May 23 PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 PHP
laravel 实现划分admin和home 模块分组
Oct 15 PHP
PHP中strval()函数实例用法
Jun 07 PHP
php表单处理操作
Nov 16 #PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 #PHP
Laravel下生成验证码的类
Nov 15 #PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 #PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 #PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 #PHP
PHP中递归的实现实例详解
Nov 14 #PHP
You might like
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
一个PHP针对数字的加密解密类
2014/03/20 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
js验证是否为数字的总结
2013/04/14 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
Python的Django框架中settings文件的部署建议
2015/05/30 Python
Python 序列的方法总结
2016/10/18 Python
python实现雨滴下落到地面效果
2018/06/21 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
python文件及目录操作代码汇总
2020/07/08 Python
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
会计出纳员的自我评价
2014/01/15 职场文书
冬季施工防火方案
2014/05/17 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
售票员岗位职责
2015/02/15 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
绿色环保倡议书
2015/04/28 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
退货证明模板
2015/06/23 职场文书
浅析Python实现DFA算法
2021/06/26 Python