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 相关文章推荐
Adodb的十个实例(清晰版)
Dec 31 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
php中的curl使用入门教程和常见用法实例
Apr 10 PHP
PHP中使用file_get_contents post数据代码例子
Feb 13 PHP
php生成圆角图片的方法
Apr 07 PHP
php如何获取文件的扩展名
Oct 28 PHP
PHP获取网站中各文章的第一张图片的代码示例
May 20 PHP
PHP session会话操作技巧小结
Sep 27 PHP
php正则修正符用法实例详解
Dec 29 PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 PHP
php微信公众号开发之图片回复
Oct 20 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
Oct 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
PHP中调用ASP.NET的WebService的代码
2011/04/22 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
Node.js 路由的实现方法
2019/06/05 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
Python and、or以及and-or语法总结
2015/04/14 Python
Python实现的选择排序算法示例
2017/11/29 Python
python读取文件名称生成list的方法
2018/04/27 Python
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
实例讲解Python爬取网页数据
2018/07/08 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
英国女士家居服网站:hush
2017/08/09 全球购物
来自世界各地的优质葡萄酒:VineShop24
2018/07/09 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
幼儿园教师请假制度
2014/01/16 职场文书
感恩之星事迹材料
2014/05/03 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
出生证明格式
2015/06/15 职场文书
解除租赁合同协议书
2016/03/21 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS