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 相关文章推荐
类的另类用法--数据的封装
Oct 09 PHP
需要发散思维学习PHP
Jun 29 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
php中的比较运算符详解
Oct 28 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
php通过array_merge()函数合并关联和非关联数组的方法
Mar 18 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
Ajax+PHP实现的模拟进度条功能示例
Feb 11 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
Apr 26 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
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
php array的学习笔记
2012/05/10 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
对django layer弹窗组件的使用详解
2019/08/31 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
英国大码女性时装零售商:Evans
2018/08/29 全球购物
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
金融行业务员的自我评价
2013/12/13 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
优秀员工事迹材料
2014/12/20 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书