remils/event-listener
最新稳定版本:1.1.0
Composer 安装命令:
composer require remils/event-listener
包简介
Слушатель событий
关键字:
README 文档
README
Реализация простого слушателя событий.
Пример использования
<?php use Remils\EventListener\AttachDispatcherInterface; use Remils\EventListener\Dispatcher; use Remils\EventListener\EventInterface; use Remils\EventListener\ListenerInterface; use Remils\EventListener\SubscriberInterface; require './vendor/autoload.php'; class Entity { public string $name; public int $age; } class SetAgeEntityEvent implements EventInterface { public int $age; } class SetNameEntityEvent implements EventInterface { public string $name; } class SendEntityEvent implements EventInterface { } class ResponseEntityEvent implements EventInterface { public Entity $entity; } class EntitySubscriber implements SubscriberInterface, AttachDispatcherInterface { protected Dispatcher $dispatcher; protected Entity $entity; public function __construct() { $this->entity = new Entity(); } public function setDispatcher(Dispatcher $dispatcher): void { $this->dispatcher = $dispatcher; } public function getSubscribedEvents(): array { return [ SetAgeEntityEvent::class => 'setAge', SetNameEntityEvent::class => 'setName', SendEntityEvent::class => 'sendEntity', ]; } public function setAge(SetAgeEntityEvent $event): void { $this->entity->age = $event->age; } public function setName(SetNameEntityEvent $event): void { $this->entity->name = $event->name; } public function sendEntity(SendEntityEvent $event): void { $event = new ResponseEntityEvent(); $event->entity = $this->entity; $this->dispatcher->dispatch($event); } } class ResponseEntityListener implements ListenerInterface { public function getEventNamespace(): string { return ResponseEntityEvent::class; } /** * @param ResponseEntityEvent $event * @return void */ public function handle(EventInterface $event): void { var_dump($event->entity); } } $listeners = [ new EntitySubscriber(), new ResponseEntityListener(), ]; $dispatcher = new Dispatcher($listeners); $event = new SetAgeEntityEvent(); $event->age = 64; $dispatcher->dispatch($event); $event = new SetNameEntityEvent(); $event->name = 'Анатолий'; $dispatcher->dispatch($event); $event = new SendEntityEvent(); $dispatcher->dispatch($event);
统计信息
- 总下载量: 3
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-10-16