IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Thinkphp5.0 钩子操作讲解 -> 正文阅读

[PHP知识库]Thinkphp5.0 钩子操作讲解

通过一下午的研究,了解了一些在这里给大家讲解一下,

Thinkphp5.0自带钩子几个

  1. app_init 应用初始化标签位,在think\App.php的initCommon函数中Hook::listen(‘app_init’);没有接收参数。
  2. app_begin应用开始标签位,在think\App.php的run函数中,在加载路由和请求信息后执行。会接收一个参数,存储的是本次请求的调度信息。
  3. module_init 模块初始化标签位,在think\App.php的module函数中,在加载请求控制器之前执行,接收一个参数,存储请求信息。
  4. action_init 控制器开始标签位,在think\App.php的module函数中,在加载完控制器后,使用反射请求控制器之前执行。接收一个参数,是一个数组,第一个元素是请求控制器实例对象,第二个函数时要执行的控制器函数名。
  5. view_fileter 视图输出过滤标签位,在think\View.php的fetch函数中,接收一个参数,视图字符串。
  6. app_end 应用结束标签为,在think\App.php中run函数中,Hook::listen(‘app_end’);
  7. log_write 日志write方法标签位,在调用Log::wirte记录日志之前执行。接收一个参数,要写入的日志信息。
  8. response_end 响应结束标签为。在think\Response.php的send函数中,在响应客户端请求之后执行。

这里面自定义的参数带不过去

?

解决办法一:

?在app\tags.php文件中添加钩子

define('BEHAVIOR_PATH', 'app\\common\\behavior\\');
$data = [
    // 模块初始化
    'module_init'  => [],
    // 操作开始执行
    'action_begin' => [],
    // 视图内容过滤
    'view_filter'  => [],
    // 日志写入
    'log_write'    => [],
    //随意定义
    'order_init'=>[BEHAVIOR_PATH . 'Order']
];

使用方式

        $params = ['id'=>'测试'];
        //参数1 钩子名称   参数2 传递的参数  
        Hook::listen('order_init',$params);

       //打印结果
        <pre>array(1) {
            ["id"] =&gt; string(6) "测试"
          }

解决办法二:

$params = ['id'=>'测试'];
Hook::exec('app\common\behavior\Order','run',$params);

?//打印结果

<pre>array(1) {
? ["id"] =&gt; string(6) "测试"
}
</pre>

这样参数就带过去,ThinkPHP内置的方式没有看到如何带参数过去,如果有知道的小伙伴可以探讨一下

以上就是ThinkPHP5.0 使用钩子并且传递参数的过程,想知道使用场景小伙伴请自行百度?

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:14:44  更:2021-11-09 19:16:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:36:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码