Thinkphp5框架简单实现钩子(Hook)行为的方法示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-12-14 10:04:19 浏览: 评论:0
本文实例讲述了Thinkphp5框架简单实现钩子(Hook)行为的方法,分享给大家供大家参考,具体如下:
实现在一个方法开始和结束加入两个行为:api_init、api_end
框架的搭建和模块的建立这里就省略了,请不太熟练的同学自行学习。
下面直接进入步骤:
1,先创建一个行为类 \application\api\behavior\AopTest.php
- <?php
- namespace app\api\behavior;
- //行为类
- class AopTest{
- //绑定api初始化
- public function apiInit(&$params){
- //参数获取
- $id = input('id');//获取请求参数
- $uid = session('UID');//获取session 登录uid
- //打印输出
- echo PHP_EOL;
- echo 'ip检查'.$params.' GET:'.$id;
- echo ' uid='.$uid;
- echo PHP_EOL;
- //获取当前模块 控制器名 方法名称
- $request= \think\Request::instance();
- $controller_name = $request->controller();
- $model_name = $request->module();
- $action_name = $request->action();
- echo ' controller_name='.$controller_name.' model_name='.$model_name.' action_name='.$action_name;
- //构建数组
- $data = array();
- $data['status'] = 0;
- $data['msg'] = '没有权限';
- //exit(json_encode($data));//以json格式返回数据
- }
- //绑定api结束
- public function apiEnd(&$params){
- echo PHP_EOL;
- echo '日志记录'.$params;
- echo PHP_EOL;
- }
- }
2,配置标签 \application\api\tags.php
这里要注意的是配置的key就是对应的行为类内的方法,如果行为类内只需要一个方法,默认用run方法,如果是多个方法则对应的标签的key,
注: V5.0.4+ 版本以上,行为类的方法需要采用驼峰法命名 apiInit,如果在版本以下可以用 api_init
- // 应用行为扩展定义文件
- return [
- //接口初始化
- 'api_init' => ['app\\api\\behavior\\AopTest'],
- 'api_end' => ['app\\api\\behavior\\AopTest'],
- ];
3,在要加入行为的类的方法内加入行为监听。
- <?php
- namespace app\api\controller;
- use \think\Hook;
- class Index
- {
- //访问url http://app.tp5.com/index.php/api/index/index?id=5
- public function index()
- {
- session_start();
- session('UID',123);
- $id = input('id');
- $params1 = '参数1';
- $res = Hook::listen('api_init',$params1);
- echo var_export($res, true);
- echo 'api index';
- $params2 = '参数2';
- Hook::listen('api_end',$params2);
- }
- }
4,访问查看输出效果:
5,文件分布示意
简单的实现了一下,希望给想了解的同学一点启发。
Tags: Thinkphp5钩子 Hook
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)