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

11. 事件机制

① 事件模式必须基于 PSR-14 去实现。
② Hyperf 的事件管理器默认由 hyperf/event 实现,该组件亦可用于其它框架或应用,只需通过 Composer 将该组件引入即可,默认已安装。

composer require hyperf/event

一、概念

事件模式是一种非常适用于解耦的机制,分别存在以下 3 种角色:

  • 事件(Event) 是传递于应用代码与 监听器(Listener) 之间的通讯对象。
  • 监听器(Listener) 是用于监听 事件(Event) 的发生的监听对象。
  • 事件调度器(EventDispatcher) 是用于触发 事件(Event) 和管理 监听器(Listener)事件(Event) 之间的关系的管理者对象

二、实现

1. 定义一个事件(Event)

  • 一个事件其实就是一个用于管理状态数据的普通类。
  • 触发时将应用数据传递到事件里,然后监听器对事件类进行操作。
  • 一个事件可被多个监听器监听。
  • 文件:app\Event\UserRegistered
<?php
namespace App\Event;class UserRegistered
{public function __construct(public $userId){$this->userId = $userId;}
}

2. 定义一个监听器(Listener)

  • 监听器都需要实现一下 Hyperf\Event\Contract\ListenerInterface 接口的约束方法。
  • 文件:app\Listener\SendSmsListener
  • 注:注解与配置的方式 二者只需使用其一即可,如果既有注解又有配置,则会造成监听器被多次触发。

(1) 通过注解 Listener 注册 监听器

<?php
namespace App\Listener;use 

相关文章:

11. 事件机制

① 事件模式必须基于 PSR-14 去实现。 ② Hyperf 的事件管理器默认由 hyperf/event 实现,该组件亦可用于其它框架或应用,只需通过 Composer 将该组件引入即可,默认已安装。 composer require hyperf/event一、概念 事件模式是一种非常适用于解耦的机制,分别存在以下 3 种角…...

MySQL 本地社区版安装(不登录) mysql官网链接

一、官网下载 官方地址 https://www.mysql.com/downloads/ 打开后先选择downloads 拉到最后选择 MySQL 社区版 然后继续选择社区版 在这此可以选择新版 选择 archives 可以选择其他版本下载 这里选择下面第一个就可以了 直接选择下载 下载后是安装包 直接双击安装 二…...

Redis Search系列 - 第三讲 拼写检查

拼写检查 - Spellchecking & Dict Spellchecking为拼写错误的搜索词提供建议。例如&#xff0c;术语“reids”可能是“redis”的拼写错误版本。 从v1.4开始&#xff0c;Redis Search可以为拼写错误的查询术语&#xff08;term&#xff09;生成替代的方案。拼写错误的术语是…...

Golang | Leetcode Golang题解之第492题构造矩形

题目&#xff1a; 题解&#xff1a; func constructRectangle(area int) []int {w : int(math.Sqrt(float64(area)))for area%w > 0 {w--}return []int{area / w, w} }...

Axure重要元件三——中继器函数

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;中继器函数 主要内容&#xff1a;Item、Reperter、TargetItem 1、中继器的函数&#xff1a;Item\Reperter\TargetItem Item item&#xff1a;获取…...

MySQL8.0.40编译安装

近期MySQL发布了8.0.40版本&#xff0c;与之前的版本相比&#xff0c;部分依赖包发生了变化&#xff0c;因此重新编译一版&#xff0c;也便于大家参考。 1. 下载源码 选择对应的版本、选择源码、操作系统 如果没有登录或者没有MySQL官网账号&#xff0c;可以选择只下载 2. 进…...

JavaScript 第23章:WebSocket 与实时通讯

在JavaScript中使用WebSocket进行实时通信是一个非常实用且强大的功能。下面我们将详细介绍WebSocket协议的基础知识、如何使用WebSocket对象以及如何构建一个简单的实时通信应用。 WebSocket 协议 WebSocket是一个在单个TCP连接上进行全双工通信的协议。WebSocket使得数据可…...

简单汇编教程10 数组

目录 实践&#xff1a;相加连续的数 数组是在内存中连续的一串变量。我这样说&#xff0c;可能你已经想到的大致的定义了&#xff1a; NUMBERS DW 34, 45, 56, 67, 75, 89 现在我们就定义了一个Number数组&#xff0c;里面存放的连续的六个数字&#xff1a;34, 45, 56, …...

Jsoup在Java中:解析京东网站数据

对于电商网站如京东来说&#xff0c;其页面上的数据包含了丰富的商业洞察。对于开发者而言&#xff0c;能够从这些网站中提取有价值的信息&#xff0c;进行分析和应用&#xff0c;无疑是一项重要的技能。本文将介绍如何使用Java中的Jsoup库来解析京东网站的数据。 Jsoup简介 …...

SQL 干货 | SQL 反连接

最强大的 SQL 功能之一是 JOIN 操作&#xff0c;它提供了一种优雅而简单的方法&#xff0c;将一个表中的每一条记录与另一个表中的每一条记录结合起来。不过&#xff0c;有时我们可能想从一个表中找到另一个表中没有的值。正如我们将在今天的博客文章中看到的&#xff0c;通过包…...

JSON 反对序列化 public final class LocalDateTime 日期格式错误

错误日志为&#xff1a; java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of java.time.LocalDateTime (no Creators, like default construct, exist): no String-argument constructor/factory meth…...

Java 集合

1. 集合框架概述 集合框架&#xff08;Collection Framework&#xff09; 是 Java 中为处理一组对象而设计的一套标准化 API&#xff0c;它包括一组通用的接口、实现类和算法。这些接口和类为各种数据结构和操作方法提供了统一的实现方式&#xff0c;使得开发者可以轻松地对数…...

爬虫日常实战

爬取美团新闻信息&#xff0c;此处采用两种方法实现&#xff1a; 注意点&#xff1a;因为此处的数据都是动态数据&#xff0c;所以一定要考虑好向下滑动数据包会更新的情况&#xff0c;不然就只能读取当前页即第一页数据&#xff0c;方法一通过更新ajax数据包网址页数&#xf…...

复写零--双指针

一&#xff1a;题目描述 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 二&#xff1a;算法原理分析 三&#xff1a;代码编写 void duplicateZeros3(vector<int>& arr) {int dest -1, cur 0, n arr.size();//1.找到要复写的最后一个数字while …...

跟着小土堆学习pytorch(二)——TensorBoard和Transform

文章目录 一、TensorBoard1.1 add_scalar()1.1,1 报错&#xff1a;TypeError: MessageToJson() got an unexpected keyword argument including_default_value_fields1.1.2 图像重叠1.1.3 代码展示 1.2 add_image()1.2.1 代码 二、transform2.1 介绍——对图片进行一些变化2.2 …...

自由学习记录(10)

Sprite Packer ~Mode & 图集 packer Project Setting经常是金屋藏娇 创建的项目如果不是2d项目&#xff0c;则默认disable打包 编辑模式就是你没点运行看游戏效果&#xff0c;在狼狈敲码创对象写逻辑的那个状态&#xff0c; 运行模式从点了|>之后&#xff0c;就一直…...

Redis提供了专门的命令来实现自增操作

Redis中的自增操作并不是直接通过CAS&#xff08;Compare and Set&#xff09;操作实现的。Redis提供了专门的命令来实现自增操作&#xff0c;这些命令能够确保操作的原子性&#xff0c;而不需要显式地使用CAS机制。 Redis中的自增操作 Redis中的自增操作主要依赖于以下几个命…...

uniapp修改input中placeholder样式

Uniapp官方提供了两种修改的属性方法&#xff0c;但经过测试&#xff0c;只有 placeholder-class 属性能够生效 <input placeholder"请输入手机验证码" placeholder-class"input-placeholder"/><!-- css --> <style lang"scss" s…...

GenerativeU:生成式开放目标检测

论文&#xff1a;https://arxiv.org/abs/2403.10191 代码&#xff1a;https://github.com/FoundationVision/GenerateU 感想 目标检测任务已经逐渐从闭集场景专项开集场景&#xff0c;在LLM加持下&#xff0c;速读越来越快。该方法仍然依赖于预先定义的类别&#xff0c;这意味着…...

element plus e-table表格中使用多选,当翻页时已选中的数据丢失

摘要&#xff1a; 点击第一页选中两个&#xff0c;再选择第二页&#xff0c;选中&#xff0c;回到第一页&#xff0c;之前选中的要保留&#xff01; element ui table 解决办法&#xff1a; :row-key“getRowKeys” &#xff08;写在el-table中&#xff09; methods中声明 ge…...

命令行与IM桥接工具:适配器模式实现统一消息通知

1. 项目概述与核心价值最近在折腾一个挺有意思的东西&#xff0c;一个叫tmwgsicp/im-cli-bridge的项目。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;我来拆解一下。tmwgsicp大概率是作者的用户名或者组织名&#xff0c;im-cli-bridge才是核心。im是即时通讯&#…...

本地大模型无缝集成IDE:TRAE-Ollama-Bridge透明代理方案详解

1. 项目概述与核心痛点 如果你和我一样&#xff0c;是个喜欢在本地折腾大模型的开发者&#xff0c;那你肯定对 Ollama 不陌生。它能让我们在个人电脑上轻松运行 Llama、Qwen、DeepSeek 这些开源模型&#xff0c;速度快&#xff0c;隐私好&#xff0c;还不用花 API 调用费。但问…...

别再被Linux的free命令骗了!手把手教你读懂‘可用内存’和‘实际空闲内存’的区别

别再被Linux的free命令骗了&#xff01;手把手教你读懂‘可用内存’和‘实际空闲内存’的区别 刚接触Linux服务器管理时&#xff0c;看到free -m输出里那个触目惊心的"free"数值&#xff0c;我的第一反应是&#xff1a;"天哪&#xff0c;内存快用完了&#xff0…...

3分钟掌握GeoJSON.io:零代码地理数据可视化的革命性工具

3分钟掌握GeoJSON.io&#xff1a;零代码地理数据可视化的革命性工具 【免费下载链接】geojson.io A quick, simple tool for creating, viewing, and sharing spatial data 项目地址: https://gitcode.com/gh_mirrors/ge/geojson.io 还在为复杂的地理信息系统软件而烦恼…...

从火箭背包到现代VTOL飞行器:FPGA飞控与传感器融合技术解析

1. 从科幻到现实&#xff1a;个人喷气背包的工程梦想每次看到老式喷气背包的影像&#xff0c;比如那些在早期007电影里出现的、两侧喷着火焰的装置&#xff0c;心里总会涌起一股混合着兴奋与敬畏的复杂情绪。那种感觉&#xff0c;就像小时候第一次拆开收音机&#xff0c;既惊叹…...

量子误差缓解技术与BBGKY层次结构的应用

1. 量子误差缓解的现状与挑战在当前的NISQ&#xff08;噪声中等规模量子&#xff09;时代&#xff0c;量子计算机的实际应用面临着一个根本性障碍&#xff1a;量子噪声。与经典计算机不同&#xff0c;量子比特极易受到环境干扰&#xff0c;导致计算错误。这种噪声主要来源于量子…...

凡亿AD22--原理图元件复制、剪切、旋转、镜像

核心作用&#xff1a;这4种操作是原理图布局的基础&#xff0c;熟练掌握可大幅提升绘制效率&#xff0c;让元器件布局更规范、信号流向更清晰&#xff0c;提升原理图可读性。一、核心操作详解所有操作均基于「选中元件」为前提&#xff08;单个元件点击选中&#xff0c;多个元件…...

【Zotero-Perplexity协同系统白皮书】:基于127个真实科研场景验证的整合失败率下降91.6%的工程化方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Zotero-Perplexity协同系统白皮书概览 Zotero-Perplexity协同系统是一个面向学术研究者的智能文献工作流增强框架&#xff0c;它将Zotero本地文献管理能力与Perplexity AI的实时语义检索、上下文感知问…...

专业右键菜单管理:用ContextMenuManager一键重塑Windows操作效率

专业右键菜单管理&#xff1a;用ContextMenuManager一键重塑Windows操作效率 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 在Windows生态中&#xff0c;右键菜…...

哔哩下载姬DownKyi:B站视频下载的终极免费解决方案

哔哩下载姬DownKyi&#xff1a;B站视频下载的终极免费解决方案 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff…...