技术说明
1.ThinkPHP版本:支持6.0、8.0
2.使用场景:用户登陆后日志记录、通知消息发送等主流程、次流程分离等场景
3.说明:网上很多帖子说的不明不白的,建议大家自己手动尝试总结一下
4.事件手动绑定的时候,一定要在app目录下的event.php中绑定,否则不生效
核心代码
事件使用主要有事件监听、事件绑定、事件订阅三种方式,事件订阅适用于单个类监听多个事件的场景,如监听用户的信息变化,例如登陆(记录登陆时间)、状态修改(记录修改人等),如果仅用于监听用户登陆,则直接使用单个事件即可。
此处重点讲的是事件订阅,具体内容参考手册自行使用即可。
1.事件订阅
php think make:subscribe UserLogin
2.注册订阅事件
在app目录下的event.php中进行订阅事件的注册,也可采用动态注册,具体使用方法自行查看手机进行编辑
<?php
// 事件定义文件
return [
'bind' => [
],
'listen' => [
'AppInit' => [],
'HttpRun' => [],
'HttpEnd' => [],
'LogLevel' => [],
'LogWrite' => [],
],
'subscribe' => [
'app\subscribe\UserInnerSubscribe', // 方法填写自己实际目录
],
];
3.修改类内容
监听事件的方法命名规范是on+事件标识(驼峰命名),根据自身的业务场景进行修改即可,示例如下:
// 监听用户登陆
public function onUserInnerLogin(Event $event, $user): void
{
halt($user);
}
public function onUserInnerLogout(): void
{
echo 'UserInnerLogout';
}
4.事件触发
在业务场景需要进行触发的地方进行调用即可,可以使用助手函数,示例如下:
event('UserInnerLogin', ['name'=>'xl','mobile'=>'183XXXXX686']);