laravel框架 - 事件与监听器
一,绑定事件与监听器
在app\Providers下的EventServiceProvider.php中添加我们定义的事件与监听器
protected $listen = [Registered::class => [SendEmailVerificationNotification::class,],'App\ebvent\RegisterMessage'=>[//事件'App\listeners\SendMessage'//监听器],];
二,生成事件 & 监听器
使用 event:generate 命令即可。这个命令会生成在 EventServiceProvider 中列出的所有事件和监听器。当然,已经存在的事件和监听器将保持不变:
php artisan event:generate
三,编写业务逻辑
在App\ebvent\目录下,打开你新创建的事件文件 RegisterMessage.php
public $teacher;/*** Create a new event instance.** @return void*/public function __construct($teacher){$this->teacher = $teacher;//}
在App\listeners\目录下,打开你新创建的监听器文件 SendMessage.php
/*** Handle the event.** @param \App\ebvent\RegisterMessage $event* @return void*/public function handle(RegisterMessage $event){Cache::add('name','张三');//}
四,在路由中使用事件
Route::get('listeners', function () {$user = ['name' => 'peter'];event(new \App\Event\RegisterMessage($user));return 'ok';
});
当我们访问/listeners路由时,会把$user变量传给事件,会执行构造方法,同时监听器也会执行handle方法
在storage目录下可以看到两个缓存文件,说明事件和监听器起作用了

实例:
实现 用户登录 & 登出系统 分别记录 登录 登出日志
相关文章:
laravel框架 - 事件与监听器
一,绑定事件与监听器 在app\Providers下的EventServiceProvider.php中添加我们定义的事件与监听器 protected $listen [Registered::class > [SendEmailVerificationNotification::class,],App\ebvent\RegisterMessage>[//事件App\listeners\SendMessage//监…...
Android存储权限完美适配(Android11及以上适配)
一、Bug简述 一个很普通的需求,需要下载图片到本地,我的三个测试机(荣耀Android10,红米 11 和小米Android 13都没有问题)。 然后,主角登场了,测试的三星Android 13 死活拉不起存储权限弹窗。 …...
国产手机芯片4G方案_紫光展锐安卓核心板虎贲4G智能模块方案定制
元器件清单即BOM物料清单,不同行业领域的BOM表侧重点不一样。安卓主板的BOM表则侧重点在于元器件物料的清单,也就是安卓电路板的PCBA清单,精密的安卓板有上千个物料,可以帮助我们估算物料成本,建立生产计划,…...
异步通讯技术之RabbitMQ
前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! 一、初识MQ …...
tcp/ip协议2实现的插图,数据结构
(1)以上是插图第2章和3章 的 mbuf 与 ifnet 与 ifaddr 与 le_softc 与 sockaddr_dl结构体 (2) 以下是 二章mbuf的宏和函数和三章函数下 (3) 以下是 三章接口层的宏和函数上 (4)4 四章1:以太网接…...
Redis学习 - 了解Redis(三)
1. 什么是缓存击穿、缓存穿透、缓存雪崩? 1.1 缓存穿透问题 先来看一个常见的缓存使用方式:读请求来了,先查下缓存,缓存有值命中,就直接返回;缓存没命中,就去查数据库,然后把数据库…...
API接口自动化测试框架
前言 接口自动化逐渐成为各大公司投入产出最高的测试技术。但是如何在版本迅速迭代过程中提高接口自动化的测试效率,仍然是大部分公司需要解决的问题。 框架定位 数据驱动设计模式,无需写测试代码脚本即可实现自动化等价类非等价类覆盖, E2E…...
MySQL学习笔记1
任务背景: 将原来的数据库从原来的MySQL-5.5 升级到现在的MySQL-5.7,并保证数据完整。 1)不同版本MySQL的安装;yum glibc、源码安装,是企业100%要用到的。 2)MySQL数据库版本升级;(…...
基于PYQT5的GUI开发系列教程【一】框架安装和基础环境配置
目录 本文概述 作者介绍 一、安装相关的库 二、在Pycharm上添加外部工具QtDesigner和PyGUI 三、测试QtDesigner和P有GUI 尾言 本文概述 PYQT5是一个基于python的可视化GUI开发框架,具有容易上手,界面美观,多平台部署等优点,…...
【漏洞复现】Jeecg-Boot SQL注入漏洞(CVE-2023-34659)
漏洞描述 jeecgBoot是一款基于BPM的低代码平台!前后端分离架构 SpringBoot 2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发!JeecgBoot引领新低代码开发模式 OnlineCoding-> 代码生…...
【MySQL基础 | 中秋特辑】多表查询详细总结
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、多表…...
21天学会C++:Day14----模板
CSDN的uu们,大家好。这里是C入门的第十四讲。 座右铭:前路坎坷,披荆斩棘,扶摇直上。 博客主页: 姬如祎 收录专栏:C专题 目录 1. 知识引入 2. 模板的使用 2.1 函数模板 2.2 类模板 3. 模板声明和定义…...
MQ - 32 基础功能:消息查询的设计
文章目录 导图概述什么时候会用到消息查询消息队列支持查询的理论基础消息数据存储结构关于索引的一些知识点内核支持简单查询根据 Offset 查询数据根据时间戳查询数据根据消息 ID 查询数据借助第三方工具实现复杂查询第三方引擎支持查询工具化简单查询总结导图 概述 从功能上…...
c语言练习66:模拟实现offsetof
模拟实现offsetof #define offsetof(StructType, MemberName) (size_t)&(((StructType *)0)->MemberName) StructType是结构体类型名,MemberName是成员名。具体操作方法是: 1、先将0转换为一个结构体类型的指针,相当于某个结构体的首…...
数据库缓存服务器集群 redis集群
redis 提升数据库性能,缓解数据库压力 2.NoSql产品 产品: redis,mongodb,memcached 名词解释:非关系型数据库 以键值对的方式存储数据---(Key-Value)的形式 3.NoSql的优点 高可扩展性 分布式计算 低成本 架构的灵活性&…...
[密码学入门]仿射密码(Affine)
加密算法y(axb)mod N 解密算法x*(y-b)mod N(此处的为a关于N的乘法逆元,不是幂的概念) 如何求,涉及的知识挺多,还没想好怎么写,丢番图方程,贝祖定理(又译裴蜀定理),扩展欧…...
【Maven】SpringBoot多模块项目利用reversion占位符,进行版本管理.打包时版本号不能识别问题
问题原因: 多模块项目使用reversion点位符进行版管理,打包时生成的pom文件未将 {reversion}占位符替换为真实版本号。 而当子模块被依赖时,引入的pom文件中版本号是:{reversion}。而根据这个版本号去找相应父模块时肯定是找不到的…...
Vue watch实时计算器
watch实时计算器 可以自己选择、-、*、 参考代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><script src"https://cdn.bootcdn.net/ajax/libs/vue/2.7.10/vue.js"></script>…...
Java中的super关键字
super 是Java中的一个关键字,它可以用来引用当前对象的父类(超类)的成员变量或方法。主要有以下用途: 访问父类的成员变量: 当子类和父类中有同名的成员变量时,可以使用super关键字来访问父类的成员变量。 …...
MySQL数据库入门到精通6--进阶篇(锁)
5. 锁 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决…...
Umi-OCR:完全免费开源的离线OCR神器,3分钟快速上手文字识别
Umi-OCR:完全免费开源的离线OCR神器,3分钟快速上手文字识别 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维…...
5秒无损转换B站缓存视频:m4s-converter完整使用指南
5秒无损转换B站缓存视频:m4s-converter完整使用指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经在B站缓存了珍贵的学习…...
Linuxbonding链路生产排障流程
Linuxbonding链路生产排障流程这是一篇面向中级 Linux 使用者的技术文章,主题聚焦在bonding链路,重点讨论链路聚合、冗余切换和接口状态。在真实生产环境中,bonding链路相关问题往往不会以单一错误形式出现,而是混杂在日志、权限、…...
别再点‘忽略’了!开机弹出Visual C++ Runtime Library错误的终极排查指南(附Adobe软件关联排查)
Visual C Runtime Library错误:从崩溃到根治的全链路解决方案 每次开机时那个刺眼的Visual C Runtime Library错误弹窗,就像一位不请自来的访客,固执地打断你的工作节奏。对于依赖Adobe Creative Cloud或达芬奇等创意工具的专业人士来说&…...
Google Labs Jules Awesome List:构建与维护高质量开发者资源清单指南
1. 项目概述:一份面向开发者的“Awesome List”清单在开源社区和开发者圈子里,有一个约定俗成的传统:当某个技术领域或工具生态变得足够庞大和复杂时,总会有热心的贡献者站出来,整理一份名为“Awesome List”的清单。这…...
CircuitPython Web Workflow实战:无线开发Yoto Mini与I2C硬件验证
1. 项目概述与核心价值如果你玩过像树莓派Pico或者ESP32这类微控制器,肯定对“插拔-编程-调试”这个循环不陌生。每次改几行代码,就得拔下USB线,重新上电,然后盯着串口监视器看输出。这个过程在项目初期调试硬件时,尤其…...
基于Sovereign-MCP-Servers构建私有AI工具链:从协议原理到Docker化部署
1. 项目概述与核心价值最近在折腾AI应用开发,特别是想给Claude、Cursor这类工具加上“联网”和“执行”能力时,绕不开一个概念:MCP(Model Context Protocol)。简单说,MCP就是一套标准协议,它能让…...
紧急更新!Midjourney 6.2.1已悄然修复碳素印相的硫化银衰减模拟缺陷——但97%用户仍在用旧参数,立即校准你的工作流
更多请点击: https://intelliparadigm.com 第一章:碳素印相的视觉本质与Midjourney 6.2.1修复的底层动因 碳素印相的物质性光感逻辑 碳素印相并非数字渲染的模拟,而是一种基于明胶-碳黑颗粒物理沉积的连续调成像工艺。其高密度阴影区呈现哑…...
树莓派扩展板EYESPI Pi Beret:简化硬件连接,加速原型开发
1. 项目概述:为什么我们需要EYESPI Pi Beret?玩树莓派的朋友,尤其是喜欢捣鼓屏幕和传感器的,肯定都经历过那个阶段:面对一堆杜邦线,对照着屏幕驱动板的引脚定义,一个个数着树莓派的GPIO针脚&…...
自主智能体框架构建指南:从LLM工具调用到多任务规划系统
1. 项目概述:一个能“开疆拓土”的智能体框架最近在开源社区里,一个名为njbrake/agent-of-empires的项目引起了我的注意。光看这个名字,就充满了野心和想象力——“帝国的代理人”。这可不是一个简单的脚本工具,而是一个旨在构建能…...
