本文实例讲述了thinkphp5框架简单实现钩子(hook)行为的方法。分享给大家供大家参考,具体如下:
实现在一个方法开始和结束加入两个行为:api_init、api_end
框架的搭建和模块的建立这里就省略了,请不太熟练的同学自行学习。
下面直接进入步骤:
1,先创建一个行为类 \\application\\api\\behavior\\aoptest.php
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<?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
?
1
2
3
4
5
6
|
// 应用行为扩展定义文件
return [
//接口初始化
'api_init' => [ 'app\\\\api\\\\behavior\\\\aoptest' ],
'api_end' => [ 'app\\\\api\\\\behavior\\\\aoptest' ],
];
|
3,在要加入行为的类的方法内加入行为监听。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?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,文件分布示意
简单的实现了一下,希望给想了解的同学一点启发。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/morning99/article/details/80169844
相关文章
猜你喜欢
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-27 99
-
2025-05-29 64
-
2025-05-25 32
-
2025-06-04 84
-
2025-05-25 17
热门评论