diff --git a/library/Zend/ModuleManager/Listener/LocatorRegistrationListener.php b/library/Zend/ModuleManager/Listener/LocatorRegistrationListener.php index 178793cd129..95e50ddb50e 100644 --- a/library/Zend/ModuleManager/Listener/LocatorRegistrationListener.php +++ b/library/Zend/ModuleManager/Listener/LocatorRegistrationListener.php @@ -69,10 +69,12 @@ public function onLoadModules(Event $e) // Shared instance for module manager $events->attach('Zend\Mvc\Application', MvcEvent::EVENT_BOOTSTRAP, function ($e) use ($moduleManager) { $moduleClassName = get_class($moduleManager); + $moduleClassNameArray = explode('\\', $moduleClassName); + $moduleClassNameAlias = end($moduleClassNameArray); $application = $e->getApplication(); $services = $application->getServiceManager(); if (!$services->has($moduleClassName)) { - $services->setService($moduleClassName, $moduleManager); + $services->setAlias($moduleClassName, $moduleClassNameAlias); } }, 1000); diff --git a/tests/ZendTest/ModuleManager/Listener/LocatorRegistrationListenerTest.php b/tests/ZendTest/ModuleManager/Listener/LocatorRegistrationListenerTest.php index 2f274108cbb..b133fc7e756 100644 --- a/tests/ZendTest/ModuleManager/Listener/LocatorRegistrationListenerTest.php +++ b/tests/ZendTest/ModuleManager/Listener/LocatorRegistrationListenerTest.php @@ -122,4 +122,23 @@ public function testModuleClassIsRegisteredWithDiAndInjectedWithSharedInstances( $this->assertInstanceOf('Zend\ModuleManager\ModuleManager', $sharedInstance2); $this->assertSame($this->moduleManager, $locator->get('Foo\Bar')->moduleManager); } + + public function testNoDuplicateServicesAreDefinedForModuleManager() + { + $locatorRegistrationListener = new LocatorRegistrationListener; + $this->moduleManager->getEventManager()->attachAggregate($locatorRegistrationListener); + + $this->moduleManager->loadModules(); + $this->application->bootstrap(); + $registeredServices = $this->application->getServiceManager()->getRegisteredServices(); + + $aliases = $registeredServices['aliases']; + $instances = $registeredServices['instances']; + + $this->assertContains('zendmodulemanagermodulemanager', $aliases); + $this->assertFalse(in_array('modulemanager', $aliases)); + + $this->assertContains('modulemanager', $instances); + $this->assertFalse(in_array('zendmodulemanagermodulemanager', $instances)); + } }