如何在vs做網(wǎng)站免費線上培訓(xùn)平臺
① 事件模式必須基于 PSR-14 去實現(xiàn)。
② Hyperf 的事件管理器默認(rèn)由 hyperf/event 實現(xiàn),該組件亦可用于其它框架或應(yīng)用,只需通過 Composer 將該組件引入即可,默認(rèn)已安裝。
composer require hyperf/event
一、概念
事件模式是一種非常適用于解耦的機制,分別存在以下 3 種角色:
事件(Event)
是傳遞于應(yīng)用代碼與監(jiān)聽器(Listener)
之間的通訊對象。監(jiān)聽器(Listener)
是用于監(jiān)聽事件(Event)
的發(fā)生的監(jiān)聽對象。事件調(diào)度器(EventDispatcher)
是用于觸發(fā)事件(Event)
和管理監(jiān)聽器(Listener)
與事件(Event)
之間的關(guān)系的管理者對象
二、實現(xiàn)
1. 定義一個事件(Event)
- 一個事件其實就是一個用于管理狀態(tài)數(shù)據(jù)的普通類。
- 觸發(fā)時將應(yīng)用數(shù)據(jù)傳遞到事件里,然后監(jiān)聽器對事件類進行操作。
- 一個事件可被多個監(jiān)聽器監(jiān)聽。
- 文件:app\Event\UserRegistered
<?php
namespace App\Event;class UserRegistered
{public function __construct(public $userId){$this->userId = $userId;}
}
2. 定義一個監(jiān)聽器(Listener)
- 監(jiān)聽器都需要實現(xiàn)一下
Hyperf\Event\Contract\ListenerInterface
接口的約束方法。 - 文件:app\Listener\SendSmsListener
- 注:注解與配置的方式 二者只需使用其一即可,如果既有注解又有配置,則會造成監(jiān)聽器被多次觸發(fā)。
(1) 通過注解 Listener 注冊 監(jiān)聽器
<?php
namespace App\Listener;use