diff --git a/src/EventManager.php b/src/EventManager.php index f5d1597..aa8c12b 100644 --- a/src/EventManager.php +++ b/src/EventManager.php @@ -157,7 +157,7 @@ public function setIdentifiers($identifiers) public function addIdentifiers($identifiers) { if (is_array($identifiers) || $identifiers instanceof Traversable) { - $this->identifiers = array_unique($this->identifiers + (array) $identifiers); + $this->identifiers = array_unique(array_merge($this->identifiers, (array) $identifiers)); } elseif ($identifiers !== null) { $this->identifiers = array_unique(array_merge($this->identifiers, array($identifiers))); } diff --git a/test/EventManagerTest.php b/test/EventManagerTest.php index 141a880..c4299ee 100644 --- a/test/EventManagerTest.php +++ b/test/EventManagerTest.php @@ -592,7 +592,12 @@ public function testIdentifierGetterSettersWorkWithArrays() $this->assertSame($this->events->getIdentifiers(), $identifiers); $identifiers[] = 'baz'; $this->assertInstanceOf('Zend\EventManager\EventManager', $this->events->addIdentifiers($identifiers)); - $this->assertSame($this->events->getIdentifiers(), $identifiers); + + // This is done because the keys doesn't matter, just the values + $expectedIdentifiers = $this->events->getIdentifiers(); + sort($expectedIdentifiers); + sort($identifiers); + $this->assertSame($expectedIdentifiers, $identifiers); } public function testIdentifierGetterSettersWorkWithTraversables() @@ -602,7 +607,13 @@ public function testIdentifierGetterSettersWorkWithTraversables() $this->assertSame($this->events->getIdentifiers(), (array) $identifiers); $identifiers = new ArrayIterator(array('foo', 'bar', 'baz')); $this->assertInstanceOf('Zend\EventManager\EventManager', $this->events->addIdentifiers($identifiers)); - $this->assertSame($this->events->getIdentifiers(), (array) $identifiers); + + // This is done because the keys doesn't matter, just the values + $expectedIdentifiers = $this->events->getIdentifiers(); + sort($expectedIdentifiers); + $identifiers = (array) $identifiers; + sort($identifiers); + $this->assertSame($expectedIdentifiers, $identifiers); } public function testListenersAttachedWithWildcardAreTriggeredForAllEvents()