Мне нужно, чтобы некоторый код был выполнен до того, как любой MvcEvent::EVENT_BOOTSTRAP
слушатель будет выполнен. Очевидно, что Module::onBootstrap
не вариант. Я заканчиваю следующим кодом:
class Module
{
function init(\Zend\ModuleManager\ModuleManager $moduleManager)
{
$moduleManager->getEventManager()->attach(
MvcEvent::EVENT_BOOTSTRAP, array(ClassX, 'StaticMethodOfClassX'), 20000);
}
}
Я не хочу жестко кодировать ссылку array(ClassX, 'StaticMethodOfClassX')
, но получу ее от сервис-менеджера. Моя проблема в том, что я не знаю, как получить ссылку на диспетчер служб внутри метода инициализации модуля. Любая помощь? или это сейчас невозможно в ZF2? Любой вариант этой схемы или мнения тоже будет оценен;)
ИЗМЕНИТЬ:
Я уточню: «Очевидно, что Module::onBootstrap не вариант», потому что это может быть не так уж и тривиально;)
Методы Module::onBootstrap
модулей выполняются, когда инициируется событие MvcEvent::EVENT_BOOTSTRAP
, но привязка метода Module::onBootstrap
каждого модуля к этому событию зависит от порядка загрузки модулей. Из-за того, что порядок, в котором будет выполняться конкретный метод Module::onBootstrap
, зависит от того, какие другие модули существуют и как другие модули влияют на порядок, в котором этот конкретный модуль будет загружен. Кроме того, любой обработчик, прикрепленный к событию MvcEvent::EVENT_BOOTSTRAP
с приоритетом больше 1, будет выполняться перед любым методом модуля Module::onBootstrap
, например обработчиком ViewManager::onBootstrap
. Итак, чтобы достичь того, что я хочу
Мне нужно, чтобы некоторый код был выполнен до того, как любой
MvcEvent::EVENT_BOOTSTRAP
слушатель будет выполнен
модули obBootstrap методы не вариант.