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 服务器调试 Zend Debugger 的安装教程
Sep 25 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
基于PHP遍历数组的方法汇总分析
Jun 08 PHP
解析PHP汉字转换拼音的类
Jun 18 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
discuz目录文件资料汇总
Dec 30 PHP
php实现的IMEI限制的短信验证码发送类
May 05 PHP
PHP设置进度条的方法
Jul 08 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 PHP
php7下的filesize函数
Sep 30 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
ASP和PHP都是可以删除自身的
2007/04/09 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
js实现ArrayList功能附实例代码
2014/10/29 Javascript
angular.element方法汇总
2015/01/07 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
py2exe 编译ico图标的代码
2013/03/08 Python
简析Python的闭包和装饰器
2016/02/26 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
opencv与numpy的图像基本操作
2019/03/08 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
T3官网:头发造型工具
2019/12/26 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
五年级音乐教学反思
2014/02/06 职场文书
小学毕业感言50字
2014/02/16 职场文书
求职意向书范文
2014/04/01 职场文书
毕业生工作求职信
2014/06/30 职场文书
人事专员岗位说明书
2014/07/29 职场文书
会计工作检讨书
2015/02/19 职场文书
2015年中个人总结范文
2015/03/10 职场文书
交流会主持词
2015/07/02 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL