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

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