module manager listeners order
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 !?
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.