本文为大家带来ThinkPHP相关知识,主要介绍事件绑定、监控、订阅等相关问题。 与中间件相比,事件的优势在于事件比中间件定位更准确。 一起来看看吧,希望对大家有所帮助。
完全掌握thinkphp的事件绑定、监控和订阅
什么是事件
事件相对于中间件的优势在于事件比中间件更精确(或者更细粒度),更适合一些业务场景的扩展。 比如我们通常会遇到用户注册或登录后的一系列操作。 通过事件系统,我们可以在不侵入原有代码的情况下,实现登录操作的扩展,减少系统的耦合,满足业务需求。
TP6 中事件的使用
官网上的解释,没有例子,这里简单的告诉你怎么用,用了之后你会发现更多的操作。
1.事件监控
命令行生成监听: php think make:listener UserLogin
一般建议直接在事件定义文件(event.php)中定义对应事件的监听。
return [
'bind' => [
'UserLogin' => 'app\event\UserLogin',
// 更多事件绑定
],
'listen' => [
'UserLogin' => ['app\listener\UserLogin'],
// 更多事件监听
],
];
2.事件订阅
命令行php think make:subscribe User
默认会生成app\subscribe\User类,或者你可以指定完整类名生成。
<?php
namespace app\subscribe;
class User
{
public function onUserLogin($user)
{
// UserLogin事件响应处理
}
public function onUserLogout($user)
{
// UserLogout事件响应处理
}
}
3.自定义订阅
如果希望自定义订阅方式(或者方法规范),可以定义subscribe方法实现。
<?php
namespace app\subscribe;
use think\Event;
class User
{
public function onUserLogin($user)
{
// UserLogin事件响应处理
}
public function onUserLogout($user)
{
// UserLogout事件响应处理
}
public function subscribe(Event $event)
{
$event->listen('UserLogin', [$this,'onUserLogin']);
$event->listen('UserLogout',[$this,'onUserLogout']);
}
}
然后在事件定义文件注册事件订阅者
return [
'bind' => [
'UserLogin' => 'app\event\UserLogin',
// 更多事件绑定
],
'listen' => [
'UserLogin' => ['app\listener\UserLogin'],
// 更多事件监听
],
'subscribe' => [
'app\subscribe\User',
// 更多事件订阅
],
];
事件触发
// 触发UserLogin事件 用于执行用户登录后的一系列操作
Event::trigger('UserLogin');
或者使用助手函数
event('UserLogin');
1.本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!