diff --git a/src/EventManager.php b/src/EventManager.php index 961cd04..e5b0bd6 100644 --- a/src/EventManager.php +++ b/src/EventManager.php @@ -447,19 +447,15 @@ protected function triggerListeners($event, EventInterface $e, $callback = null) $wildcardListeners = $this->getListeners('*'); if (count($sharedListeners) || count($sharedWildcardListeners) || count($wildcardListeners)) { $listeners = clone $listeners; - } - - // Shared listeners on this specific event - $this->insertListeners($listeners, $sharedListeners); - // Shared wildcard listeners - $this->insertListeners($listeners, $sharedWildcardListeners); + // Shared listeners on this specific event + $this->insertListeners($listeners, $sharedListeners); - // Add wildcard listeners - $this->insertListeners($listeners, $wildcardListeners); + // Shared wildcard listeners + $this->insertListeners($listeners, $sharedWildcardListeners); - if ($listeners->isEmpty()) { - return $responses; + // Add wildcard listeners + $this->insertListeners($listeners, $wildcardListeners); } foreach ($listeners as $listener) { @@ -535,10 +531,6 @@ protected function getSharedListeners($event) */ protected function insertListeners($masterListeners, $listeners) { - if (!count($listeners)) { - return; - } - foreach ($listeners as $listener) { $priority = $listener->getMetadatum('priority'); if (null === $priority) { diff --git a/src/EventManagerAwareTrait.php b/src/EventManagerAwareTrait.php new file mode 100644 index 0000000..5305d58 --- /dev/null +++ b/src/EventManagerAwareTrait.php @@ -0,0 +1,22 @@ +getObjectForTrait('\Zend\EventManager\EventManagerAwareTrait'); + + $this->assertAttributeEquals(null, 'events', $object); + + $eventManager = new EventManager; + + $object->setEventManager($eventManager); + + $this->assertAttributeEquals($eventManager, 'events', $object); + } + + public function testGetEventManager() + { + $object = $this->getObjectForTrait('\Zend\EventManager\EventManagerAwareTrait'); + + $this->assertInstanceOf('\Zend\EventManager\EventManagerInterface', $object->getEventManager()); + + $eventManager = new EventManager; + + $object->setEventManager($eventManager); + + $this->assertSame($eventManager, $object->getEventManager()); + } +}