下面由thinkphp教程栏目给大家介绍tp5框架中的hook机制,希望对需要的朋友有所帮助!

1. 官方解释

行为(Behavior)是ThinkPHP扩展机制中比较关键的6 5 d o一项扩展,行为既可以独立调用,也可以绑定到某个标签中进行侦听,在官方提出的CBD模式中行为也占了主要的地位,可见行为在ThinkPHP框架中意义非凡。

2. TP5自带钩子(TP框架中已经埋好标签,我们只要配置实现相应的函数就可以用了)

  1. app_init 应用初始化标签位,在think\App.php的initCommon函数中Ho~ E _ H 1 Gok::listen(‘app_initY ( B’);没有接收参数。
  2. app_begin应用开始标签位,在think\App.php的f n O n ; L n – Yrun函数中,在加载路由和请求信息后执行。会接收一个参数,存储的是本次请求的调度信息\ f *
  3. module_init 模块初始化标签位,在think\App.php的module函数中,在加载请求控制器之前执行,3 R S m ^ $ 4 B接收一个参$ ? S N k n数,存储请? M + X 4 S v求信息。
  4. action_init 控制器开始标签位,在think\App.php的module函数中,在加载完控制器后,使用反射请求控制器之前执行。接收一个参数,是一个数组,第一个元素是请求控制器实例对象,第二个函数时要执行的控制器函数名。
  5. view_fileter 视图输出过滤标签k _ W 9位,在think\View.pl ! : h r xhp的fetch函数中,接收一个参数,P J M e } / 0 E z视图字符串。
  6. app_end 应用) $ U v 6 Y g y ~结束标签为,在think\App.php中run函数中,Ho$ U 4 : H ? y ;ok::listen(‘C ) 2app_end’);
  7. log_write 日志write方法标签位,在调用Log::wirte记录日志之前执行。接e # % | , R收一个参数,要写入的日志信息。
  8. re$ . 5 n W (sA ? )ponse_end 响应结束标签为。在t{ K o p q % _ bhink\Response.php的send函数中,在响应客户端请求之后执行。

3. 钩子函数x 2 n F的注册和监听都依赖于think\Hook.php

4. 系统只带的钩子函数,我们可以在application\tags.php中注册,也可以使用Hook::add()来添加。

> 1. 官方文档数tags.php会自动加载,但是经测试我下载的tp5不会自动加载tags.php文件,所以就手动在think\start.php文件的App::run()->send();函数之前写了一行代码用于,注册tags文件中的钩子实现。代码为
"php
// 加载Hook
Hook::import(require APP_PATH . '/tags.php');
"
> 2. 也可以使用Hook::add和Hook::listen来添加自己的钩子函数。Ho; m 8 T c fok::listen()相当于是标签位,Hook::add()则相当于是对标签位相应的实现。所以要确保Hook::add()在Hoo::listen之前执行o s f 3,不然n s / 6 J o就没什么用处了。

5. 钩子函数的绑定。

钩子函数既可以单独绑定一个类,5 \ \ 0 O Y也可以绑定类中的一个方法,或者直接绑定一个匿名函数。当绑定到一个类时,如果类中有run函数,那就直接执行run函数,如果没有run函数,而有一个与钩子名一样的函数则会执行该函数。(] . W L O = 5 N注意:钩子函数是驼峰式命名,并且钩子函数名的优先级大于run函数的优先级)

以上就是介绍tp5框架中的hook机制I 7 6 B的详细内容,更多请关注php中– – 4 S S [ X _ Y文网其它相关文章!

php中文网最新课程二维码

声明:( Y % W / Q I L* H 3 l ! 6 v文转载于:csdn,如有侵犯,请联系admin@php.cn删除

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注