effectra / event-dispatcher
Effectra 事件调度器包。
v1.1.0
2023-11-10 09:21 UTC
Requires
- psr/event-dispatcher: ^1.0
README
Effectra\EventDispatcher 是一个适用于 PHP 的多功能且轻量级的事件调度库,旨在简化您应用程序中事件的管理。它遵循 PSR-14 标准,提供了一种一致且可扩展的方式来处理事件、监听器和事件传播。
特点
- PSR-14 兼容性:遵循事件调度的 PSR-14 标准,确保与其他 PHP 包和框架的互操作性。
- 可停止的事件:支持可停止的事件,允许在必要时在传播过程中停止事件。
- 灵活的监听器提供者:通过灵活的监听器提供者接口轻松注册和管理特定事件的监听器。
- 一致的イベントハンドリング:确保按注册顺序同步执行监听器。
- 简化 API:提供简单的 API 以调度事件,使它易于集成到您的项目中。
安装
您可以通过 Composer 安装 Effectra\EventDispatcher。在您的项目目录中运行以下命令
composer require effectra/event-dispatcher
用法
1. 创建事件
通过扩展 Effectra\EventDispatcher\Event
类来创建自定义事件类。此基类实现了 Psr\EventDispatcher\StoppableEventInterface
,允许事件可停止。
namespace YourNamespace\Events; use Effectra\EventDispatcher\Event; class CustomEvent extends Event { // Your event properties and methods }
2. 注册监听器
通过定义可调用的函数或实现必要逻辑的类来创建监听器。使用 Effectra\EventDispatcher\ListenerProvider
类注册监听器。
namespace YourNamespace; use Effectra\EventDispatcher\ListenerProvider; use YourNamespace\Events\CustomEvent; // Create a listener provider $listenerProvider = new ListenerProvider(); // Register a listener for the CustomEvent $listenerProvider->addListener(CustomEvent::class, function (CustomEvent $event) { // Handle the CustomEvent }); // Dispatching the event $event = new CustomEvent(); $dispatcher = new EventDispatcher($listenerProvider); $dispatcher->dispatch($event);
3. 可停止的事件
要创建一个可停止的事件,在您的逻辑中使用 stopPropagation()
方法。这将防止进一步执行其他监听器。
namespace YourNamespace\Events; use Effectra\EventDispatcher\Event; class StoppableEvent extends Event { public function process(): void { // Your event processing logic // Stop further propagation if a condition is met if ($condition) { $this->stopPropagation(); } } }
贡献
欢迎贡献!Fork 仓库,创建分支,进行更改,然后创建拉取请求。请确保您的 PR 描述清楚地描述了您所做的更改。
许可证
此包受 MIT 许可证 的许可。