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

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.kler.cn/news/362329.html

相关文章:

  • 【软件测试】理论杂记 + Selenium
  • juzigei/基于Java语言的充电桩系统(充电桩小程序+充电桩管理平台)
  • 企业数字化转型的理论指南:构建未来企业的关键策略与实践路径
  • ubuntu20.04 opencv4.0 /usr/local/lib/libgflags.a(gflags.cc.o): relocation报错解决
  • Java项目-基于springboot框架的学习选课系统项目实战(附源码+文档)
  • Docker安装Mysql5.7,解决无法访问DockerHub问题
  • FFmpeg源码:av_malloc_array、av_realloc_array函数分析
  • Go_Parser部署、使用与原理分析
  • DOIP协议介绍-1
  • LeetCode 3185. 构成整天的下标对数目 II
  • MySQL8.0主从同步报ERROR 13121错误解决方法
  • VisionPro 手部骨骼跟踪 Skeletal Hand Tracking 虚拟首饰
  • Go:strings包的基本使用
  • Qt学习笔记第21到30讲
  • 『 Linux 』HTTP(三)
  • 【火山引擎】语音合成 | HTTP接口 | 一次性合成 | python
  • AnaTraf | 网络流量分析仪:网络故障排除的利器
  • 038_基于php校园Flea Market售货平台
  • C/C++:指针数组与数组指针
  • C++:模板(2)
  • AI+云原生时代,高校该如何创新教育模式
  • git取消被跟踪的文件并忽略
  • 分享一位教授关于VLAN标签在交换机中的转发原理的教学
  • 线性可分支持向量机的原理推导 线性分隔超平面关于任意样本点 (x_i,y_i)的几何间隔 公式解析
  • 数据结构与算法:高级数据结构与实际应用
  • <el-input-number> 回车自动失去焦点