【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初始化结束

相关文章
|
9月前
|
JavaScript
state 和 props 触发更新的生命周期分别有什么区别?
state 和 props 触发更新的生命周期分别有什么区别?
|
5月前
|
缓存
自定义 Hook 钩子,实现实时化更新本地缓存
自定义 Hook 钩子,实现实时化更新本地缓存
|
5月前
props和state相同点和不同点?render方法在哪些情况下会执行?
props和state相同点和不同点?render方法在哪些情况下会执行?
18 0
|
7月前
|
JavaScript Shell
eventBus和$route.push.query同时用解决eventBus持久化问题,和跨组件引起的路由传参监听不到没变化的问题
eventBus和$route.push.query同时用解决eventBus持久化问题,和跨组件引起的路由传参监听不到没变化的问题
15 0
|
9月前
tp的生命周期
tp的生命周期
|
9月前
React+Hook+ts+antDesign实现伪定时调用接口功能
React+Hook+ts+antDesign实现伪定时调用接口功能
43 0
|
9月前
|
前端开发
【React工作记录八十六】React+Hook+ts+antDesignMobile实现input自动获取功能
【React工作记录八十六】React+Hook+ts+antDesignMobile实现input自动获取功能
53 0
|
9月前
|
存储 前端开发
定时器中使用React hooks的 state 值不变的解决办法
定时器中使用React hooks的 state 值不变的解决办法
123 0
|
11月前
|
JavaScript
VUE中的mounted和created在页面加载过程只执行一次,computed和watch是用来监听值发生变化的
VUE中的mounted和created在页面加载过程只执行一次,computed和watch是用来监听值发生变化的
|
11月前
|
前端开发
React+Hook+ts+antDesignMobile实现input自动获取功能
React+Hook+ts+antDesignMobile实现input自动获取功能
89 0