@@ -41,68 +41,68 @@ |
||
| 41 | 41 | |
| 42 | 42 | class EventDispatcher implements IEventDispatcher { |
| 43 | 43 | |
| 44 | - /** @var SymfonyDispatcher */ |
|
| 45 | - private $dispatcher; |
|
| 46 | - |
|
| 47 | - /** @var IContainer */ |
|
| 48 | - private $container; |
|
| 49 | - |
|
| 50 | - /** @var LoggerInterface */ |
|
| 51 | - private $logger; |
|
| 52 | - |
|
| 53 | - public function __construct(SymfonyDispatcher $dispatcher, |
|
| 54 | - IServerContainer $container, |
|
| 55 | - LoggerInterface $logger) { |
|
| 56 | - $this->dispatcher = $dispatcher; |
|
| 57 | - $this->container = $container; |
|
| 58 | - $this->logger = $logger; |
|
| 59 | - } |
|
| 60 | - |
|
| 61 | - public function addListener(string $eventName, |
|
| 62 | - callable $listener, |
|
| 63 | - int $priority = 0): void { |
|
| 64 | - $this->dispatcher->addListener($eventName, $listener, $priority); |
|
| 65 | - } |
|
| 66 | - |
|
| 67 | - public function removeListener(string $eventName, |
|
| 68 | - callable $listener): void { |
|
| 69 | - $this->dispatcher->removeListener($eventName, $listener); |
|
| 70 | - } |
|
| 71 | - |
|
| 72 | - public function addServiceListener(string $eventName, |
|
| 73 | - string $className, |
|
| 74 | - int $priority = 0): void { |
|
| 75 | - $listener = new ServiceEventListener( |
|
| 76 | - $this->container, |
|
| 77 | - $className, |
|
| 78 | - $this->logger |
|
| 79 | - ); |
|
| 80 | - |
|
| 81 | - $this->addListener($eventName, $listener, $priority); |
|
| 82 | - } |
|
| 83 | - |
|
| 84 | - public function dispatch(string $eventName, |
|
| 85 | - Event $event): void { |
|
| 86 | - $this->dispatcher->dispatch($event, $eventName); |
|
| 87 | - |
|
| 88 | - if ($event instanceof ABroadcastedEvent && !$event->isPropagationStopped()) { |
|
| 89 | - // Propagate broadcast |
|
| 90 | - $this->dispatch( |
|
| 91 | - IBroadcastEvent::class, |
|
| 92 | - new BroadcastEvent($event) |
|
| 93 | - ); |
|
| 94 | - } |
|
| 95 | - } |
|
| 96 | - |
|
| 97 | - public function dispatchTyped(Event $event): void { |
|
| 98 | - $this->dispatch(get_class($event), $event); |
|
| 99 | - } |
|
| 100 | - |
|
| 101 | - /** |
|
| 102 | - * @return SymfonyDispatcher |
|
| 103 | - * @deprecated 20.0.0 |
|
| 104 | - */ |
|
| 105 | - public function getSymfonyDispatcher(): SymfonyDispatcher { |
|
| 106 | - return $this->dispatcher; |
|
| 107 | - } |
|
| 44 | + /** @var SymfonyDispatcher */ |
|
| 45 | + private $dispatcher; |
|
| 46 | + |
|
| 47 | + /** @var IContainer */ |
|
| 48 | + private $container; |
|
| 49 | + |
|
| 50 | + /** @var LoggerInterface */ |
|
| 51 | + private $logger; |
|
| 52 | + |
|
| 53 | + public function __construct(SymfonyDispatcher $dispatcher, |
|
| 54 | + IServerContainer $container, |
|
| 55 | + LoggerInterface $logger) { |
|
| 56 | + $this->dispatcher = $dispatcher; |
|
| 57 | + $this->container = $container; |
|
| 58 | + $this->logger = $logger; |
|
| 59 | + } |
|
| 60 | + |
|
| 61 | + public function addListener(string $eventName, |
|
| 62 | + callable $listener, |
|
| 63 | + int $priority = 0): void { |
|
| 64 | + $this->dispatcher->addListener($eventName, $listener, $priority); |
|
| 65 | + } |
|
| 66 | + |
|
| 67 | + public function removeListener(string $eventName, |
|
| 68 | + callable $listener): void { |
|
| 69 | + $this->dispatcher->removeListener($eventName, $listener); |
|
| 70 | + } |
|
| 71 | + |
|
| 72 | + public function addServiceListener(string $eventName, |
|
| 73 | + string $className, |
|
| 74 | + int $priority = 0): void { |
|
| 75 | + $listener = new ServiceEventListener( |
|
| 76 | + $this->container, |
|
| 77 | + $className, |
|
| 78 | + $this->logger |
|
| 79 | + ); |
|
| 80 | + |
|
| 81 | + $this->addListener($eventName, $listener, $priority); |
|
| 82 | + } |
|
| 83 | + |
|
| 84 | + public function dispatch(string $eventName, |
|
| 85 | + Event $event): void { |
|
| 86 | + $this->dispatcher->dispatch($event, $eventName); |
|
| 87 | + |
|
| 88 | + if ($event instanceof ABroadcastedEvent && !$event->isPropagationStopped()) { |
|
| 89 | + // Propagate broadcast |
|
| 90 | + $this->dispatch( |
|
| 91 | + IBroadcastEvent::class, |
|
| 92 | + new BroadcastEvent($event) |
|
| 93 | + ); |
|
| 94 | + } |
|
| 95 | + } |
|
| 96 | + |
|
| 97 | + public function dispatchTyped(Event $event): void { |
|
| 98 | + $this->dispatch(get_class($event), $event); |
|
| 99 | + } |
|
| 100 | + |
|
| 101 | + /** |
|
| 102 | + * @return SymfonyDispatcher |
|
| 103 | + * @deprecated 20.0.0 |
|
| 104 | + */ |
|
| 105 | + public function getSymfonyDispatcher(): SymfonyDispatcher { |
|
| 106 | + return $this->dispatcher; |
|
| 107 | + } |
|
| 108 | 108 | } |
@@ -40,38 +40,38 @@ |
||
| 40 | 40 | */ |
| 41 | 41 | final class ServiceEventListener { |
| 42 | 42 | |
| 43 | - /** @var IContainer */ |
|
| 44 | - private $container; |
|
| 43 | + /** @var IContainer */ |
|
| 44 | + private $container; |
|
| 45 | 45 | |
| 46 | - /** @var string */ |
|
| 47 | - private $class; |
|
| 46 | + /** @var string */ |
|
| 47 | + private $class; |
|
| 48 | 48 | |
| 49 | - /** @var LoggerInterface */ |
|
| 50 | - private $logger; |
|
| 49 | + /** @var LoggerInterface */ |
|
| 50 | + private $logger; |
|
| 51 | 51 | |
| 52 | - /** @var null|IEventListener */ |
|
| 53 | - private $service; |
|
| 52 | + /** @var null|IEventListener */ |
|
| 53 | + private $service; |
|
| 54 | 54 | |
| 55 | - public function __construct(IContainer $container, |
|
| 56 | - string $class, |
|
| 57 | - LoggerInterface $logger) { |
|
| 58 | - $this->container = $container; |
|
| 59 | - $this->class = $class; |
|
| 60 | - $this->logger = $logger; |
|
| 61 | - } |
|
| 55 | + public function __construct(IContainer $container, |
|
| 56 | + string $class, |
|
| 57 | + LoggerInterface $logger) { |
|
| 58 | + $this->container = $container; |
|
| 59 | + $this->class = $class; |
|
| 60 | + $this->logger = $logger; |
|
| 61 | + } |
|
| 62 | 62 | |
| 63 | - public function __invoke(Event $event) { |
|
| 64 | - if ($this->service === null) { |
|
| 65 | - try { |
|
| 66 | - $this->service = $this->container->query($this->class); |
|
| 67 | - } catch (QueryException $e) { |
|
| 68 | - $this->logger->error("Could not load event listener service " . $this->class, [ |
|
| 69 | - 'exception' => $e, |
|
| 70 | - ]); |
|
| 71 | - return; |
|
| 72 | - } |
|
| 73 | - } |
|
| 63 | + public function __invoke(Event $event) { |
|
| 64 | + if ($this->service === null) { |
|
| 65 | + try { |
|
| 66 | + $this->service = $this->container->query($this->class); |
|
| 67 | + } catch (QueryException $e) { |
|
| 68 | + $this->logger->error("Could not load event listener service " . $this->class, [ |
|
| 69 | + 'exception' => $e, |
|
| 70 | + ]); |
|
| 71 | + return; |
|
| 72 | + } |
|
| 73 | + } |
|
| 74 | 74 | |
| 75 | - $this->service->handle($event); |
|
| 76 | - } |
|
| 75 | + $this->service->handle($event); |
|
| 76 | + } |
|
| 77 | 77 | } |
@@ -65,7 +65,7 @@ |
||
| 65 | 65 | try { |
| 66 | 66 | $this->service = $this->container->query($this->class); |
| 67 | 67 | } catch (QueryException $e) { |
| 68 | - $this->logger->error("Could not load event listener service " . $this->class, [ |
|
| 68 | + $this->logger->error("Could not load event listener service ".$this->class, [ |
|
| 69 | 69 | 'exception' => $e, |
| 70 | 70 | ]); |
| 71 | 71 | return; |