【TP5.1】钩子的使用

文件分布示意

在这里插入图片描述

建立钩子文件

data/behavior/AopTest.phpphp

<?php

namespace data\behavior;

class AopTest
{
    //绑定api初始化
    public function apiInit($params){
        echo 'api初始化开始';
    }

    //绑定api结束
    public function apiEnd($params){
        echo 'api初始化结束';
    }

}

配置钩子

application/tags.phpthinkphp

<?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.phpapache

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

相关文章
相关标签/搜索