当前位置: 首页 > 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 
http://www.lryc.cn/news/466772.html

相关文章:

  • MySQL 本地社区版安装(不登录) mysql官网链接
  • Redis Search系列 - 第三讲 拼写检查
  • Golang | Leetcode Golang题解之第492题构造矩形
  • Axure重要元件三——中继器函数
  • MySQL8.0.40编译安装
  • JavaScript 第23章:WebSocket 与实时通讯
  • 简单汇编教程10 数组
  • Jsoup在Java中:解析京东网站数据
  • SQL 干货 | SQL 反连接
  • JSON 反对序列化 public final class LocalDateTime 日期格式错误
  • Java 集合
  • 爬虫日常实战
  • 复写零--双指针
  • 跟着小土堆学习pytorch(二)——TensorBoard和Transform
  • 自由学习记录(10)
  • Redis提供了专门的命令来实现自增操作
  • uniapp修改input中placeholder样式
  • GenerativeU:生成式开放目标检测
  • element plus e-table表格中使用多选,当翻页时已选中的数据丢失
  • CentOS 7 网络连接显示“以太网(ens33)不可用”
  • qt QNetworkProxy详解
  • 推荐IDE中实用AI编程插件,目前无限次使用
  • 【华为HCIP实战课程十五】OSPF的环路避免及虚链路,网络工程师
  • 【编程语言】正则表达式:POSIX 与 PCRE 的全面比较及应用
  • Spark Streaming 数据流处理
  • 高效规划神器 markmap:一键将 Markdown 变思维导图!
  • 微服务基础架构(图)
  • 中电金信:大模型时代 金融机构企业架构转型如何更智能化?
  • 基于CRNN模型的多位数字序列识别的应用【代码+数据集+python环境+GUI系统】
  • windows中命令行批处理脚本学习