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写的serv-u的web申请账号的程序
Oct 09 PHP
基于mysql的论坛(7)
Oct 09 PHP
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
win7+apache+php+mysql环境配置操作详解
Jun 10 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
PHP判断表单复选框选中状态完整例子
Jun 24 PHP
PHP实现Javascript中的escape及unescape函数代码分享
Feb 10 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
php实现自定义中奖项数和概率的抽奖函数示例
May 26 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 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获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
深入理解React高阶组件
2017/09/28 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
python进程类subprocess的一些操作方法例子
2014/11/22 Python
在Django中创建动态视图的教程
2015/07/15 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
2019/10/17 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
python轮询机制控制led实例
2020/05/03 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
一些网络技术方面的面试题
2014/05/01 面试题