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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
PHP 中执行系统外部命令
Oct 09 PHP
php Mysql日期和时间函数集合
Nov 16 PHP
特详细的PHPMYADMIN简明安装教程
Aug 01 PHP
用PHP将数据导入到Foxmail的实现代码
Sep 05 PHP
探讨Hessian在PHP中的使用分析
Jun 13 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
php打造智能化的柱状图程序,用于报表等
Jun 19 PHP
Yii2实现中国省市区三级联动实例
Feb 08 PHP
PHP实现的分页类定义与用法示例
Jul 05 PHP
PHP保留两位小数的几种方法
Jul 24 PHP
在 Laravel 6 中缓存数据库查询结果的方法
Dec 11 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/10/09 PHP
php SQL防注入代码集合
2008/04/25 PHP
PHP Array交叉表实现代码
2010/08/05 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
js实现点击烟花特效
2020/10/14 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
python中对_init_的理解及实例解析
2019/10/11 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
什么是URL
2015/12/13 面试题
高校自主招生自荐信
2013/12/09 职场文书
开学典礼感言
2014/02/16 职场文书
中考冲刺决心书
2014/03/11 职场文书
公务员诚信承诺书
2014/05/26 职场文书
电子商务专业求职信
2014/07/10 职场文书
病人慰问信范文
2015/02/15 职场文书
酒店开业主持词
2015/07/02 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫