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 和 MySQL 基础教程(一)
Oct 09 PHP
php的控制语句
Oct 09 PHP
一步一步学习PHP(1) php开发环境配置
Feb 15 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
Feb 16 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 PHP
php计算两个文件相对路径的方法
Mar 14 PHP
比较完整的微信开发php代码
Aug 02 PHP
php实现页面纯静态的实例代码
Jun 21 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 PHP
Laravel如何同时连接多个数据库详解
Aug 13 PHP
php新建文件的方法实例
Sep 26 PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 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&&mysql)四
2006/10/09 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
php 字符串替换的方法
2012/01/10 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
PHP使用NuSOAP调用Web服务的方法
2015/07/18 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
div移动 输入框不能输入的问题
2009/11/19 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
jQuery实现网站添加高亮突出显示效果的方法
2015/06/26 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
JS实现小星星特效
2019/12/24 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
浅析Python多线程下的变量问题
2015/04/28 Python
python2.7实现爬虫网页数据
2018/05/25 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
生活部的活动方案
2014/08/19 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
GO中sync包自由控制并发示例详解
2022/08/05 Golang