public function testOnlyCallsTheListenerSubscribedToAGivenEvent() { $this->dispatcher->addListener(FooEvent::class, $this->listener1); $this->dispatcher->addListener(BarEvent::class, $this->listener2); $event = new FooEvent(); $this->dispatcher->dispatch($event); $this->assertTrue($this->listener1->isCalled()); $this->assertSame($event, $this->listener1->getEvent()); $this->assertFalse($this->listener2->isCalled()); }
/** * @param ServiceLocatorInterface $serviceLocator * * @return EventDispatcher */ public function __invoke(ServiceLocatorInterface $serviceLocator) { $listenersConfig = $this->getListenersConfig($serviceLocator); $eventDispatcher = new EventDispatcher(); foreach ($listenersConfig as $eventName => $listenerNames) { $listenerNames = (array) $listenerNames; foreach ($listenerNames as $listenerName) { $listener = $serviceLocator->get($listenerName); $eventDispatcher->addListener($eventName, $listener); } } return $eventDispatcher; }