laminas-modulemanager
laminas-modulemanager copied to clipboard
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 !?
Originally posted by @Baft at https://github.com/zendframework/zend-modulemanager/issues/81