zend-modulemanager icon indicating copy to clipboard operation
zend-modulemanager copied to clipboard

module manager listeners order

Open Baft opened this issue 8 years ago • 1 comments

i was installed two module moduleA and moduleB

application.config.php :
'modules' => array (
				'moduleA',
				'moduleB',
		),

when i try to override a service of moduleA serviceA from moduleB serviceB , it was unsuccessful .

moduleA:

module.conf.php:
       service_manager=>[ ... 'serviceA' => 'serviceAFactory' ... ]

module.php:
      onBootstrap(){ ... $serviceManager->get('serviceA') ... }
moduleB:

module.php:
      getServiceConfig(){ return ... [ ... 'serviceA' => 'serviceBFactory' ... ] ;}

Code to reproduce the issue

because module listeners called in this order

https://framework.zend.com/manual/2.4/en/modules/zend.module-manager.module-manager.html . . . Zend\ModuleManager\Listener\ConfigListener Zend\ModuleManager\Listener\InitTrigger Zend\ModuleManager\Listener\LocatorRegistrationListener Zend\ModuleManager\Listener\ModuleResolverListener Zend\ModuleManager\Listener\OnBootstrapListener Zend\ModuleManager\Listener\ServiceListener . . .

its means moduleB can not override a service by providing moduleB->getServiceConfig() on bootstrapEvent and have to define service in moduleB->getConfig() to be able override a service from moduleA ,before it call on bootstrap(). actually service manager configured in tow separated place that is not get same result.

Expected results

is it not better to call Zend\ModuleManager\Listener\ServiceListener after Zend\ModuleManager\Listener\ConfigListener to be usable in Bootstrap !?

Baft avatar Dec 27 '17 17:12 Baft

This repository has been closed and moved to laminas/laminas-modulemanager; a new issue has been opened at https://github.com/laminas/laminas-modulemanager/issues/2.

weierophinney avatar Dec 31 '19 21:12 weierophinney