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中的正规表达式(一)
Oct 09 PHP
php 301转向实现代码
Sep 18 PHP
PHP用mysql数据库存储session的代码
Mar 05 PHP
PHP技术开发技巧分享
Mar 23 PHP
PHP性能优化工具篇Benchmark类调试执行时间
Dec 06 PHP
PHP中的替代语法简介
Aug 22 PHP
php批量删除数据库下指定前缀的表以prefix_为例
Aug 24 PHP
分享一个Laravel好用的Cache宏
Mar 02 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
Oct 23 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 PHP
Laravel find in set排序实例
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实现定时器任务(Timer)
2015/07/31 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
基于jquery的超简单上下翻
2010/04/20 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
英文版餐饮运营管理求职信
2013/11/06 职场文书
黄河象教学反思
2014/02/10 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
《绝招》教学反思
2016/02/20 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS
JavaScript实现队列结构过程
2021/12/06 Javascript
Java 定时任务技术趋势简介
2022/05/04 Java/Android