幽灵作者 / 事件调度器
事件调度器实现。
5.0.2
2024-07-15 22:32 UTC
Requires
- php: >=8.3
- ghostwriter/container: ^4.0.2
Requires (Dev)
- ghostwriter/coding-standard: dev-main
README
为PHP提供事件调度器实现。
安装
您可以通过composer安装此包
composer require ghostwriter/event-dispatcher
如果您认为这个仓库有用,请星标 ⭐️ 它
您也可以星标 (🌟) 这个仓库,以便稍后更容易找到。
使用方法
注册和分发事件监听器。
use Ghostwriter\EventDispatcher\EventDispatcher; use Ghostwriter\EventDispatcher\ListenerProvider; // Create an event class final class ExampleEvent { } // Create an Event Listener final class ExampleEventListener { public function __invoke(ExampleEvent $event): void { // Handle the event, e.g., print the event class name // echo $event::class; } } // Create a ListenerProvider $provider = ListenerProvider::new(); // or new ListenerProvider() // Bind the Listener to the Event $provider->bind(ExampleEvent::class, ExampleEventListener::class); // Create an EventDispatcher $dispatcher = EventDispatcher::new($provider); // or new EventDispatcher($provider) // Dispatch the Event. $event = $dispatcher->dispatch(new ExampleEvent()); // Assert the Event is the same as the dispatched Event assert($event instanceof ExampleEvent);
事件订阅者
注册事件订阅者。
use Ghostwriter\EventDispatcher\Interface\ListenerProviderInterface; use Ghostwriter\EventDispatcher\Interface\SubscriberInterface; use Override; final class EventSubscriber implements SubscriberInterface { /** * @throws Throwable */ #[Override] public function __invoke(ListenerProviderInterface $provider): void { // InvokableListener '::__invoke' $provider->bind( TestEvent::class, TestEventListener::class, ); } } // Create a ListenerProvider $provider = ListenerProvider::new(); // or new ListenerProvider() // Subscribe the EventSubscriber $provider->subscribe(EventSubscriber::class); // Create an EventDispatcher $dispatcher = EventDispatcher::new($provider); // or new EventDispatcher($provider) // Dispatch the Event. $event = $dispatcher->dispatch(new TestEvent()); // Assert the Event is the same as the dispatched Event assert($event instanceof TestEvent);
变更日志
请参阅 CHANGELOG.md 获取最近更改的更多信息。
安全
如果您发现任何与安全相关的问题,请发送电子邮件至 nathanael.esayeas@protonmail.com
或创建一个 安全公告 而不是使用问题跟踪器。
许可证
BSD-3-Clause。请参阅 许可证文件 获取更多信息。