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设计模式 DAO(数据访问对象模式)
Jun 26 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
Jun 27 PHP
php下载文件源代码(强制任意文件格式下载)
May 09 PHP
php实现高效获取图片尺寸的方法
Dec 12 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
PHP中实现获取IP和地理位置类分享
Feb 10 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
PHP递归的三种常用方式
Feb 28 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 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表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
php之XML转数组函数的详解
2013/06/07 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
JavaScript移除数组元素减少长度的方法
2013/09/05 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
python中元类用法实例
2014/10/10 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
企业总经理职责
2014/02/02 职场文书
机电专业大学生职业规划书范文
2014/02/25 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
2015年社区流动人口工作总结
2015/05/12 职场文书
如何做好工作总结!
2019/04/10 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis