vendor/shopware/core/Framework/Event/NestedEventDispatcher.php line 34

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Framework\Event;
  3. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. /**
  6.  * @package core
  7.  */
  8. class NestedEventDispatcher implements EventDispatcherInterface
  9. {
  10.     /**
  11.      * @var EventDispatcherInterface
  12.      */
  13.     private $dispatcher;
  14.     /**
  15.      * @internal
  16.      */
  17.     public function __construct(EventDispatcherInterface $dispatcher)
  18.     {
  19.         $this->dispatcher $dispatcher;
  20.     }
  21.     public function dispatch($event, ?string $eventName null): object
  22.     {
  23.         if ($event instanceof NestedEvent && $events $event->getEvents()) {
  24.             foreach ($events as $nested) {
  25.                 $name null;
  26.                 if ($nested instanceof GenericEvent) {
  27.                     $name $nested->getName();
  28.                 }
  29.                 $this->dispatch($nested$name);
  30.             }
  31.         }
  32.         return $this->dispatcher->dispatch($event$eventName);
  33.     }
  34.     /**
  35.      * @param callable $listener can not use native type declaration @see https://github.com/symfony/symfony/issues/42283
  36.      */
  37.     public function addListener(string $eventName$listenerint $priority 0): void
  38.     {
  39.         $this->dispatcher->addListener($eventName$listener$priority);
  40.     }
  41.     public function addSubscriber(EventSubscriberInterface $subscriber): void
  42.     {
  43.         $this->dispatcher->addSubscriber($subscriber);
  44.     }
  45.     /**
  46.      * @param callable $listener can not use native type hint as it is incompatible with symfony <5.3.4
  47.      */
  48.     public function removeListener(string $eventName$listener): void
  49.     {
  50.         $this->dispatcher->removeListener($eventName$listener);
  51.     }
  52.     public function removeSubscriber(EventSubscriberInterface $subscriber): void
  53.     {
  54.         $this->dispatcher->removeSubscriber($subscriber);
  55.     }
  56.     public function getListeners(?string $eventName null): array
  57.     {
  58.         return $this->dispatcher->getListeners($eventName);
  59.     }
  60.     /**
  61.      * @param callable $listener can not use native type hint as it is incompatible with symfony <5.3.4
  62.      */
  63.     public function getListenerPriority(string $eventName$listener): ?int
  64.     {
  65.         return $this->dispatcher->getListenerPriority($eventName$listener);
  66.     }
  67.     public function hasListeners(?string $eventName null): bool
  68.     {
  69.         return $this->dispatcher->hasListeners($eventName);
  70.     }
  71. }