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加入ftp扩展的解决方法
Feb 07 PHP
php无限遍历文件夹示例分享
Mar 04 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
Linux操作系统安装LAMP环境
Jun 26 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
简单实现php上传文件功能
Sep 21 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 02 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
Git命令之分支详解
Mar 02 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结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
vue.js路由跳转详解
2017/08/28 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python子类继承父类构造函数详解
2019/02/19 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
幼儿园毕业典礼主持词
2014/03/21 职场文书
装修活动策划方案
2014/08/27 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
防灾减灾标语
2014/10/07 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
单位更名证明
2015/06/18 职场文书