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+dbfile开发小型留言本
Oct 09 PHP
php4的session功能评述(二)
Oct 09 PHP
56.com视频采集接口程序(PHP)
Sep 22 PHP
PHP编码规范之注释和文件结构说明
Jul 09 PHP
PHP中的错误处理、异常处理机制分析
May 07 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
php递归方法实现无限分类实例代码
Feb 28 PHP
thinkphp数据查询和遍历数组实例
Nov 28 PHP
Symfony2创建页面实例详解
Mar 18 PHP
PHP与SQL语句常用大全
Dec 10 PHP
PHP7 windows支持
Mar 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按百分比生成缩略图的代码分享
2014/05/10 PHP
浅谈php优化需要注意的地方
2014/11/27 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
JavaScript下通过的XMLHttpRequest发送请求的代码
2011/06/28 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
JS上传图片前实现图片预览效果的方法
2015/03/02 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
python基础教程之Filter使用方法
2017/01/17 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
numpy实现神经网络反向传播算法的步骤
2019/12/24 Python
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
美国鲜花递送:UrbanStems
2021/01/04 全球购物
历史系自荐信范文
2013/12/24 职场文书
中学门卫岗位职责
2013/12/26 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
新法人代表任命书
2014/06/06 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
奖金申请报告模板
2015/05/15 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
nginx 配置缓存
2022/05/11 Servers