TP框架中的钩子怎么配置调用(附代码实例)

下面thinkphp框架教程栏目将给大家介绍关于thinkphp钩子的两种配置调用方法,希望对需要的朋友有所帮助!

thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置。下面是我个人的设置经验,在这里跟大家分享一下。

个人做了两种设置,都试验成功了,一个简单点,在thinkphp的核心文件中模仿核心行为类添加了另一个行为类,下面是截图:

TP框架中的钩子怎么配置调用(附代码实例)

我的虚拟主机配置文件夹是D:/think

Thinkphp是tp框架文件夹,配置过tp框架应该都知道Library是tp放核心文件的文件夹,Behavior文件夹则是tp的钩子行为类文件的核心文件夹,里面放置着很多行为类文件,我只是模仿这些钩子行为类文件在里面建了一个钩子行为类文件adBehavior.class.php,内容如下:

<?phpnamespace Behavior;class adBehavior{  function run($arg){//在此介绍下,run必须的 ,细心的会在Think核心找到Behavior.class.php里面有这样一句话 abstract public function run(&$params);    echo '我是一条'.$arg['name'].'广告,'.$arg['value'].'代言';  }}

设置好了自定义的钩子行为类之后,我们接下来就要利用这个钩子行为类促发钩子的行为了,”钩子的行为”说白了其实就是促发钩子行为类的run方法里面的代码执行,我这里只是简单的输出run方法参数的内容,在应用中的,大家可以自由发挥。

下面是促发行为的操作:

解释一下:我这里是Home模块下面的IndexController控制器的登录方法

namespace HomeController;use ThinkController;use ThinkHook;//引进促发钩子行为的类,是为下面的Hook::add()调用做伏笔的class IndexController extends Controller {  public function login(){    //这里我设置一个ad行为的标签,也就是给我自定义的adBehavior钩子行为类添加一个促发行为的标识    Hook::add('ad','BehavioradBehavior');    //第一个是执行标签的名称,第二个参数是行为的类的地址    Hook::add('test', "HomeBehaviorstestBehavior");    //Hook::add('test2', "HomeBehaviorstestBehavior");    $param=array('name'=>'testBehavior');    $param2=array('LIS'=>'LLISTION');    $param3=array('music'=>'cangjingshikong');    $this->assign('param',$param);    $this->assign('param',$param2);    $this->assign('param',$param3);    $this->display();  }}

下面是login模板内容:

  ThinkPHP 行为(Behavior)扩展以及插件(Plug or Hook)详解(含实例)      

How to used?

{:hook('ad', array('name'=>'AV','value'=>'*老师'))}
————————————————分割线1——————————————————
{:hook('ad', array('name'=>'MV','value'=>'苍井空老师'))}
————————————————分割线2——————————————————
hook函数:{:hook('test', array('name'=>'World'))}
tag函数:{:tag('mv',$param)}

tag函数:{:tag('action_begin',$param)}

这里的路径我就不写了吧,一般对tp框架了解的人都知道,这个模板login.html放在哪里。

关于这个模板的内容,我已经提前把下面要讲述的另一种设置钩子行为类方法的内容也放在这里了,大家可以自行测试一下调用这个模板,如果你跟着我的思路设置了,我想它应该会输出:

How to used?我是一条AV广告,*老师代言————————————————分割线1——————————————————我是一条MV广告,苍井空老师代言————————————————分割线2——————————————————

呵呵,这里引用苍老师的作用,你懂的。

废话不多说,下面是第二种自己设置行为类的方法,这里我是根据tp框架的手册以及诸位网友的网文自己测试成功了的,大家按照我的思路设置就行了。只有你配置对了,我想应该不会出现太多问题。

1、首先在你的模块下面建一个文件夹Behaviors,再在Behaviors里面创建自定义的钩子行为类,钩子行为类必须是xxxBehaviors.class.php的格式。

2、其次在你的模块下面的Conf文件夹中新增一个文件tags.php。
为什么要这样,这是tp的语法,你照做就行了,当然你自己也可以探究一下。

这样子说或许还不够形象,下面我还是上代码吧,本人描述比较差。

先截个图显示路径吧,免得有的同学还是摸不着头脑。

TP框架中的钩子怎么配置调用(附代码实例)

解释一下上面的文件夹,Conf文件夹有的tp会自动生成,有的可能要你新建,Behaviors文件夹则是要你新建的,下面还是上代码:

在Behaviors文件夹里面(完整路径D:hinkpplicationHomeBehaviorsestBehavior.class.php)我自定义的钩子行为类的内容:

<?php/** * Created by PhpStorm. * User: Administrator * Date: 2016/7/17 * Time: 11:02 */namespace HomeBehaviors;/* * 注册钩子行为类,要触发的行为写在run函数里 * */class testBehavior extends ThinkBehavior{  public function run(&$arg){    echo 'test behavior=====下一行是参数
'.$arg['name']; }}

在Conf文件夹里面(完整路径D:hinkpplicationHomeConfags.php,当然这是我的情况)tags.php的内容:

天工AI 天工AI

昆仑万维推出的国内首款融入大语言模型的AI对话问答、AI搜索引擎,知识从这里开始。

天工AI 400 查看详情 天工AI

array('HomeBehaviorstest','HomeBehaviorstest'),  //一个标签位可以有多个行为,使用数组即可。  // 如果是3.2.1版本 则需要改成  'action_begin'=>array('HomeBehaviorstestBehavior','HomeBehaviorstestBehavior'),  'mv'=>array('HomeBehaviorsmvBehavior','HomeBehaviorsmvBehavior'));

解释一下,上面tags.php文件的内容,我配置了两个行为标识,“action_begin“,“mv“,是跟login.html那里相对应的,你可以回去仔细查看一下,login.html模板的内容,必定包含有“action_begin“,“mv“,这里也是tp框架在tags.php设置行为标识的语法,要是想问为什么可以自行探究,这里不多说。

还有请注意:上面那个被我注释掉的‘action_begin’,其实是我的版本不适合这个语法,这是其他版本在tags.php配置行为标识的语法,这里tp里面的文档说的比较清楚,我就不多说了。如果,你的版本和我不同,那么请用上面的语法尝试一下,如果用上面的语法配置还是没办法配置成功,那么可能是你配置错了。

配置好了,那么请你再尝试调用模板login.html。我相信你一定能获得你想要的配置结果的。

这里提醒一句,请认真看我所做的注释,那里可以说也包含了很多信息。

接下来,我要讲讲设置监听钩子行为类的两个方法hook(),tag():

这两个函数都是tp内置监听钩子行为类的内置函数,可以在tp框架的函数库functions.php文件中找得到。这里只讲他们的调用区别,其实已经在login.html模板文件中提到了,这里就再次说明一下:

两个函数在functions.php的代码:

/** * 获取和设置配置参数 支持批量定义 * @param string|array $name 配置变量 * @param mixed $value 配置值 * @param mixed $default 默认值 * @return mixed */function hook($hook,$params=array()){  ThinkHook::listen($hook,$params); //监听一个钩子}/** * 处理标签扩展 * @param string $tag 标签名称 * @param mixed $params 传入参数 * @return void */function tag($tag, &$params=NULL) {  ThinkHook::listen($tag,$params);}

之所以在这里展示一下这两个函数的内容,是为了解释它们的区别:

细心的你应该发现tag函数的$param参数值里前面带了一个···&···符号,没有错:这个符号就是引用变量的地址符号,所以tag函数的$param参数只能是变量,请不要怀疑,你可以测试一下不是变量的情况,呵呵。

它们的区别也在于此,hook可以引用任何参数,tag只能引用变量的参数

上面那个tags.php文件里面我在每个标签行为的后面都重复配置了testBehavior自定义类,是为了证明,一个标签也可以对应多个行为类,如果你配置成功了,那么你运行login.html的时候,肯定发现login根据testBehavior设置的执行了两次。

最后,总结一下:

其实,我想说,tp框架的钩子行为类无非就是为了在某个特定地点,特定时间促发某种行为,这个是应用很广的,本人姑且这么认为。比如,你想要在某个模板植入广告,可以向我这样子简单的设置。

然后,简单的介绍tp行为的引用步骤:

首先第一步,你要先配置好自己的行为类,这是毋庸置疑的。

其次是促发的行为,你必须在你自定义的行为类的run里面设置,在这里实现你的任何行为,run方法就是你配置行为的地方。

然后,就是配置tags.php的行为标识了,这里你可以按照上面格式配置,当然,你有没有细心的发现上面的IndexController.class.php里面我多写了几行代码:

//第一个是执行标签的名称,第二个参数是行为的类的地址Hook::add('test', "HomeBehaviorstestBehavior");

其实这里是动态添加行为标识的代码,也就是说,钩子行为的标签行为,也就是标识也可以动态添加的,你可以试试。

最后,就是监听行为了,监听行为就是引用tag方法或者hook方法了,在这里你可以传入参数,也可不传,看你想怎么做了。监听行为你可以在模板上监听,也可以在其他地方监听,比如控制器的方法中,这里就不举例了,你可以自己试试,我之所以在模板中举例,完全是为了看到效果,毕竟做实验看不到你要的结果,是证明不了你的实验是个成功的实验的。

多说一句,本人比较粗心,假如有什么 文字错误 还请指出,或者自己脑补 ,呵呵。

推荐:《最新的10个thinkphp视频教程》

以上就是TP框架中的钩子怎么配置调用(附代码实例)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/727507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月25日 10:06:21
下一篇 2025年11月25日 10:10:07

相关推荐

  • thinkphp如何注销登录

    ThinkPHP 注销登录用户:引用 Auth 类:use thinkAuth;注销用户:Auth::logout();跳转到指定页面:$this->redirect(‘login/index’); 如何注销登录用户 在使用 ThinkPHP 实现的应用中,注销登录用户…

    2025年12月12日
    000
  • thinkphp的上传类如何使用

    ThinkPHP 上传类指南:初始化上传类:$upload = new thinkFile();设置上传参数,如 maxSize、exts、saveName 等。上传文件:$info = $upload->upload($file);验证上传结果:上传成功时 $info 包含文件信息,失败时返…

    2025年12月12日
    000
  • thinkphp如何更新版本号

    更新 ThinkPHP 版本号需要:1. 备份代码;2. 更新 composer.json 文件中的版本号;3. 运行 composer update;4. 检查 .env 文件中的版本号;5. 清除缓存(可选)。 如何在 ThinkPHP 中更新版本号 更新 ThinkPHP 版本号是一个简单的过…

    2025年12月12日
    000
  • 什么是IRYS币?如何参与空投?完整指南与方法介绍

    IRYS是Arweave生态的扩容方案,通过交易捆绑技术实现快速、永久、可验证的数据上链;参与空投需持有AR代币至自管地址、交互Arweave生态DApp或直接使用IRYS上传数据。 irys是arweave生态系统中的一个扩容解决方案,旨在提供快速、永久且可验证的数据上链服务。参与其空投的主要方式…

    2025年12月12日
    000
  • OKX官网登录首页 OKX欧易平台网页版登录入口

    OKX官网登录首页为https://www.okx.com/,提供现货、合约等多样化交易服务,支持多语言与Web3功能,具备高强度安全防护与全球服务器布局,覆盖丰富的交易产品及全天候用户支持体系。 okx官网登录首页在哪里?这是不少网友都关注的,接下来由php小编为大家带来okx欧易平台网页版登录入…

    2025年12月11日
    000
  • 币安官网入口最新网址更新 币安Binance交易所正确登录地址

    币安官网入口最新网址更新在哪里?这是不少网友都关注的,接下来由php小编为大家带来币安binance交易所正确登录地址,感兴趣的网友一起随小编来瞧瞧吧! 币安官网入口最新网址: 币安Binance交易所官方APP下载: 平台交易品种丰富 1、该平台支持超过500种不同的数字资产进行交易,涵盖主流币种…

    2025年12月11日
    000
  • 币安Binance官网中文版网址 币安交易所网页版直接登录

    币安binance官网中文版网址在哪里?这是不少网友都关注的,接下来由php小编为大家带来币安交易所网页版直接登录方式,感兴趣的网友一起随小编来瞧瞧吧! 币安Binance官网中文版网址: 币安交易所官方APP下载: 平台基础功能介绍 1、用户可以通过该平台进行超过三百五十种加密货币的自由交易,界面…

    2025年12月11日
    000
  • 火币官网最新网址直接进入 Huobi火币交易所官方登录平台

    火币官网最新网址直接进入在哪里?这是不少网友都关注的,接下来由php小编为大家带来huobi火币交易所官方登录平台,感兴趣的网友一起随小编来瞧瞧吧! 火币官网最新网址入口: 火币官方APP下载: 平台资产种类丰富多样 1、该平台支持多种类型的数字资产进行交易流转,涵盖了市场上部分主流与新兴的交易品种…

    2025年12月11日
    000
  • 安币官网登录入口直达 安币Binance交易平台APP安装步骤

    安币官网登录入口直达为https://www.binance.com/,用户可在此下载官方APP并完成安装;平台提供全球数字货币交易服务,支持多种订单类型与多语言界面,配备安全响应中心保障账户安全;移动端兼容iOS和Android系统,具备价格提醒、生物识别登录及资讯聚合功能;账户管理方面实行分级认…

    2025年12月11日
    000
  • 欧意怎么在电脑上访问?欧意ouyi平台电脑版官方访问地址

    欧意平台%ignore_a_1%版可通过官网https://www.ouyi.com/访问,支持网页端登录,具备多窗口操作、菜单导航、消息通知等功能,实现跨设备同步与数据加密传输,保障账户安全。 欧意怎么在电脑上访问?这是不少网友都关注的,接下来由php小编为大家带来欧意ouyi平台电脑版官方访问地…

    2025年12月11日
    000
  • okx官网网页版入口 欧易网页版登录入口首页

    欧易网页版登录入口为https://www.okx.com/,提供全天候数字资产交易、多端数据同步、双重身份验证等安全机制,支持多种主流币种交易及实时行情分析,界面简洁,便于新手操作。 okx官网网页版入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来欧易网页版登录入口首页,感兴趣的网友…

    2025年12月11日
    000
  • 最新gate.io登录地址 Gate交易所电脑版官方网站

    最新gate.io登录地址在哪里?这是不少网友都关注的,接下来由php小编为大家带来gate交易所电脑版官方网站,感兴趣的网友一起随小编来瞧瞧吧! Gate交易所官网入口: Gate交易所官方APP下载: 平台访问与下载方式 1、用户可通过主流浏览器直接访问官网网址,进入平台主页面后可查看实时行情与…

    2025年12月11日
    000
  • gate.io官方网站登录链接 芝麻开门交易所PC端

    gate.io官方网站登录链接在哪里?这是不少网友都关注的,接下来由php小编为大家带来芝麻开门交易所pc端登录入口地址,感兴趣的网友一起随小编来瞧瞧吧! gate.io官方网站入口: gate.io官方APP下载: 平台访问与登录步骤 1、在电脑的浏览器中输入官方网址,确保网络连接稳定后,等待页面…

    2025年12月11日
    000
  • OKX欧易官方网站入口 欧易2025最新安全登录注册地址

    okx欧易官方网站入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来okx欧易2025最新安全登录注册地址,感兴趣的网友一起随小编来瞧瞧吧! OKX欧易官方网站入口: OKX欧易官方APP下载: 平台核心功能服务 1、提供全球范围内的数字货币交易服务,涵盖现货、杠杆及合约等多种交易模式,…

    2025年12月11日
    000
  • gate.io官方入口链接 Gate交易所网页版注册地址

    gate.io官方入口链接在哪里?这是不少网友都关注的,接下来由php小编为大家带来gate交易所网页版注册地址,感兴趣的网友一起随小编来瞧瞧吧! Gate交易所网页版注册地址: gate.io官方APP下载: 平台访问与账户创建流程 1、进入官方网站后,在页面右上角可以找到“注册”按钮,点击即可跳…

    2025年12月11日
    000
  • Gate芝麻开门官网入口 gate.io在线登录网页版

    gate芝麻开门官网入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来gate.io在线登录网页版,感兴趣的网友一起随小编来瞧瞧吧! Gate芝麻开门官网入口: Gate芝麻开门官方APP下载: 平台访问与账户登录流程 1、进入浏览器后,在地址栏准确输入网址,确保连接为HTTPS加密状态…

    2025年12月11日
    000
  • 登录gate.io官方网站 Gate交易所网页版入口

    登录gate.io官方网站 gate交易所网页版入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来gate.io官网登录入口及使用指南,感兴趣的网友一起随小编来瞧瞧吧! gate.io官方网站入口: gate.io官方APP下载: 平台访问与账户登录流程 1、直接在浏览器地址栏输入官方网…

    2025年12月11日
    000
  • 芝麻开门官方网址 gate.io交易所网页登录入口

    芝麻开门官方网址 gate.io交易所网页登录入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来gate.io交易所网页登录入口,感兴趣的网友一起随小编来瞧瞧吧! 芝麻开门gate.io官方网址入口: 芝麻开门gate.io交易所官方APP下载: 平台访问与安全验证 1、输入官方网址后,…

    2025年12月11日
    000
  • Gate交易所网页版登录 gate.io官方网站入口链接

    芝麻开门官方网址 gate.io交易所网页登录入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来gate.io交易所网页登录入口,感兴趣的网友一起随小编来瞧瞧吧! gate.io官方网站入口: gate.io官方APP下载: 平台访问与安全验证 1、在浏览器地址栏准确输入网址,确保网络环…

    2025年12月11日
    000
  • gate.io官方网页登录入口 芝麻开门交易所官网

    gate.io官方网页登录入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来芝麻开门交易所官网登录入口,感兴趣的网友一起随小编来瞧瞧吧! 芝麻开门交易所官网入口: gate.io官方APP下载: 平台访问与安全验证 1、在浏览器地址栏输入网址,确保网络连接稳定后加载页面。观察浏览器顶部是…

    2025年12月11日
    000

发表回复

登录后才能评论
关注微信