【TP5.1】钩子的使用

简介: 【TP5.1】钩子的使用

文件分布示意

屏幕快照 2022-05-16 下午10.40.30.png

创建钩子文件

data/behavior/AopTest.php

<?php
namespace data\behavior;
class AopTest
{
    //绑定api初始化
    public function apiInit($params){
        echo 'api初始化开始';
    }
    //绑定api结束
    public function apiEnd($params){
        echo 'api初始化结束';
    }
}

配置钩子

application/tags.php

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// 应用行为扩展定义文件
return [
    // 应用初始化
    'app_init'     => [
        \data\behavior\MessageBehavior::class,
        \data\behavior\LoadBehavior::class,
    ],
    // 应用开始
    'app_begin'    => [],
    //接口初始化
    'api_init'      => [\data\behavior\AopTest::class],
    'api_end'      => [\data\behavior\AopTest::class],
    // 模块初始化
    'module_init'  => [],
    // 操作开始执行
    'action_begin' => [],
    // 视图内容过滤
    'view_filter'  => [],
    // 日志写入
    'log_write'    => [],
    // 应用结束
    'app_end'      => [],
];

在要加入行为的类的方法内加入行为监听。

application/index/controller/Aop.php

<?php
namespace app\index\controller;
use think\facade\Hook;
use think\Controller;
class Aop extends Controller
{
    public function index()
    {
        $id = 123;
        $params1  = '参数1';
        $res = Hook::listen('api_init',$params1);
        echo 'api index';
        $params2 = '参数2';
        Hook::listen('api_end',$params2);
    }
}

访问查看输出效果:

api初始化开始api indexapi初始化结束

相关文章
|
JavaScript 前端开发
49dwr - 传递额外的数据到 callback 函数
49dwr - 传递额外的数据到 callback 函数
52 0
|
7月前
|
JavaScript
js【详解】event loop(事件循环/事件轮询)
js【详解】event loop(事件循环/事件轮询)
71 0
|
9月前
|
JavaScript
Vue中子组件单个双向绑定发送事件使用input,多个使用 update:变量名;父组件接收时,v-model 接收单个,.sync 接收多个(vue3中使用v-model:name的写法)
Vue中子组件单个双向绑定发送事件使用input,多个使用 update:变量名;父组件接收时,v-model 接收单个,.sync 接收多个(vue3中使用v-model:name的写法)
|
JavaScript Shell
eventBus和$route.push.query同时用解决eventBus持久化问题,和跨组件引起的路由传参监听不到没变化的问题
eventBus和$route.push.query同时用解决eventBus持久化问题,和跨组件引起的路由传参监听不到没变化的问题
63 0
|
JavaScript 前端开发
JS引擎的执行机制event loop
JS引擎的执行机制event loop
82 0
|
存储 JavaScript
tp5源码解析--hook(钩子函数)类详解
tp5源码解析--hook(钩子函数)类详解
311 0
tp5源码解析--hook(钩子函数)类详解
|
中间件
TP5.1中间件跟行为钩子区别
TP5.1中间件跟行为钩子区别
209 9
TP5.1中间件跟行为钩子区别
ReactHooks11-自定义hook函数
ReactHooks11-自定义hook函数
96 0
ReactHooks11-自定义hook函数

热门文章

最新文章