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 相关文章推荐
example2.php
Oct 09 PHP
第三节--定义一个类
Nov 16 PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
php生成随机颜色的方法
Nov 13 PHP
php针对cookie操作的队列操作类实例
Dec 10 PHP
自己写的php中文截取函数mb_strlen和mb_substr
Feb 09 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
Feb 04 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
PHP Swoole异步Redis客户端实现方法示例
Oct 24 PHP
TP3.2框架分页相关实现方法分析
Jun 03 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字符串截取问题
2006/11/28 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
JavaScript仿商城实现图片广告轮播实例代码
2016/02/06 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
python pycharm的安装及其使用
2019/10/11 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
高一家长会邀请函
2014/01/12 职场文书
办理生育手续介绍信
2014/01/14 职场文书
2014政务公开实施方案
2014/02/19 职场文书
搞笑车尾标语
2014/06/23 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
特种设备安全管理制度
2015/08/06 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
Python的property属性详细讲解
2022/04/11 Python