当前位置: 首页 > news >正文

ThinkPHP事件的使用

技术说明

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']);

http://www.lryc.cn/news/413824.html

相关文章:

  • 【Nuxt】服务端渲染 SSR
  • Spring Boot整合WebSocket
  • 《LeetCode热题100》---<5.③普通数组篇五道>
  • Cocos Creator文档学习记录
  • 插入数据优化 ---大批量数据插入建议使用load
  • 【Linux】一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向?
  • svn软件总成全内容
  • [激光原理与应用-118]:电源系统的接地详解:小信号的噪声干扰优化,从良好外壳接地开始
  • 回测本身就是一种过度拟合?
  • 什么是Arduino?
  • 【机器学习基础】Scikit-learn主要用法
  • python-素数回文数的个数(赛氪OJ)
  • OCC 网格化(二)-网格划分算法
  • pyecharts模块
  • 深⼊理解指针(3)
  • 黑马头条vue2.0项目实战(四)——首页—文章列表
  • UE5.4内容示例(4)UI_UMG - 学习笔记
  • C#实现数据采集系统-配置文件化
  • Java面试题 -- 为什么重写equals就一定要重写hashcode方法
  • J031_使用TCP协议支持与多个客户端同时通信
  • 二分查找(精确查找、范围搜索)
  • 软件工程简记
  • 【深度学习】【语音TTS】OpenVoice v2,测评,中英文语料,Docker镜像,对比GPT-SoVITS、FishAudio、BertVITS2
  • Kotlin OpenCV 图像图像50 Haar 级联分类器模型
  • 嗖嗖移动业务大厅(Java版)
  • hcia复习笔记
  • pycharm中安装、使用扩展工具,以QT Designer为例
  • 【Rust光年纪】Rust语言实用库汇总:从机器翻译到全文搜索引擎
  • 学习笔记 - 二极管的参数与选型
  • PMP--冲刺--易混概念