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 使用钩子并且传递参数的过程,想知道使用场景小伙伴请自行百度 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值