thinkPHP中钩子的使用方法实例分析

 更新时间:2017年11月16日 11:51:19   作者:逝火  
这篇文章主要介绍了thinkPHP中钩子的使用方法,结合实例形式分析了thinkPHP钩子的创建、添加、使用等相关操作技巧与注意事项,需要的朋友可以参考下

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

相关文章

  • PHP中的正则表达式实例详解

    PHP中的正则表达式实例详解

    在编程里基本都会用到正则表达式来处理数据,那么下面就具体在PHP中怎么运用吧,本文通过具体的实例,给大家讲解了PHP中正则表达式的使用方法。
    2017-04-04
  • php打造智能化的柱状图程序,用于报表等

    php打造智能化的柱状图程序,用于报表等

    这篇文章主要介绍了php打造智能化的柱状图程序,用于报表等的相关资料,需要的朋友可以参考下
    2015-06-06
  • Laravel获取所有的数据库表及结构的方法

    Laravel获取所有的数据库表及结构的方法

    今天小编就为大家分享一篇Laravel获取所有的数据库表及结构的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • yii2-GridView在开发中常用的功能及技巧总结

    yii2-GridView在开发中常用的功能及技巧总结

    本篇文章主要介绍了yii2-GridView在开发中常用的功能及技巧总结,数据网格或者说 GridView 小部件是Yii中最强大的部件之一。有兴趣的可以了解一下。
    2017-01-01
  • Laravel 5框架学习之向视图传送数据(进阶篇)

    Laravel 5框架学习之向视图传送数据(进阶篇)

    上篇文章我们介绍了Laravel5框架中如何向视图中传送数据,今天我们来研究下如何向视图中传送array,非常的详细,推荐给有需要的小伙伴参考下。
    2015-04-04
  • php使浏览器直接下载pdf文件的方法

    php使浏览器直接下载pdf文件的方法

    本文介绍如何让用户打开pdf文件时不是直接在浏览器浏览而是直接以下载文件形式把pdf文件下载到电脑
    2013-11-11
  • PHP 枚举类型的管理与设计知识点总结

    PHP 枚举类型的管理与设计知识点总结

    在本篇文章里小编给大家整理的是关于PHP 枚举类型的管理与设计知识点总结,需要的朋友们可以学习参考下。
    2020-02-02
  • PHP小白必须要知道的php基础知识(超实用)

    PHP小白必须要知道的php基础知识(超实用)

    PHP是一 种被广泛应用的开放源代码的、基于服务器端的用于产生动态网页 的、可嵌入HTML中的脚本程序语言,尤其适合 WEB 开发。下面给大家分享PHP小白必须要知道的php基础知识,超实用,感兴趣的朋友一起学习吧
    2017-10-10
  • php中二维数组排序问题方法详解

    php中二维数组排序问题方法详解

    一维数组排序可以使用asort、ksort等一些方法进程排序,相对来说比较简单。二维数组的排序怎么实现呢?使用array_multisort和usort可以实现,下面跟着小编来学习php中二维数组排序问题方法详解
    2015-08-08
  • PHPMailer发送邮件

    PHPMailer发送邮件

    PHPMailer是一个封装好的PHP邮件发送类,支持发送HTML内容的电子邮件,以及图片附件,前提要设置好邮件服务器就能实现邮件发送功能。本文给大家分享PHPMailer发送邮件功能,一起看看吧
    2016-12-12

最新评论