vendor/ibexa/site-factory/src/lib/Event/EventDispatcher.php line 28

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. declare(strict_types=1);
  7. namespace Ibexa\SiteFactory\Event;
  8. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. final class EventDispatcher implements EventDispatcherInterface
  11. {
  12.     private EventDispatcherInterface $innerEventDispatcher;
  13.     private array $classMap;
  14.     public function __construct(EventDispatcherInterface $innerEventDispatcher)
  15.     {
  16.         $this->innerEventDispatcher $innerEventDispatcher;
  17.         $this->classMap = require __DIR__ '/../../bundle/Resources/mappings/class-map.php';
  18.     }
  19.     public function dispatch(object $eventstring $eventName null): object
  20.     {
  21.         return $this->innerEventDispatcher->dispatch($event$eventName);
  22.     }
  23.     public function addListener(string $eventName$listenerint $priority 0): void
  24.     {
  25.         $newEventName $this->resolveEventName($eventName);
  26.         if (null !== $newEventName) {
  27.             $this->innerEventDispatcher->addListener($newEventName$listener$priority);
  28.         }
  29.         $this->innerEventDispatcher->addListener($eventName$listener$priority);
  30.     }
  31.     public function addSubscriber(EventSubscriberInterface $subscriber): void
  32.     {
  33.         $this->innerEventDispatcher->addSubscriber($subscriber);
  34.     }
  35.     public function removeListener(string $eventName, callable $listener): void
  36.     {
  37.         $newEventName $this->resolveEventName($eventName);
  38.         if (null !== $newEventName) {
  39.             $this->innerEventDispatcher->removeListener($newEventName$listener);
  40.         }
  41.         $this->innerEventDispatcher->removeListener($eventName$listener);
  42.     }
  43.     public function removeSubscriber(EventSubscriberInterface $subscriber): void
  44.     {
  45.         $this->innerEventDispatcher->removeSubscriber($subscriber);
  46.     }
  47.     public function getListeners(string $eventName null): array
  48.     {
  49.         return $this->innerEventDispatcher->getListeners($eventName);
  50.     }
  51.     public function getListenerPriority(string $eventName$listener): ?int
  52.     {
  53.         return $this->innerEventDispatcher->getListenerPriority($eventName$listener);
  54.     }
  55.     public function hasListeners(string $eventName null): bool
  56.     {
  57.         return $this->innerEventDispatcher->hasListeners($eventName);
  58.     }
  59.     private function resolveEventName(string $fullyQualifiedName): ?string
  60.     {
  61.         return $this->classMap[$fullyQualifiedName] ?? null;
  62.     }
  63. }