Трябва да се изпълни някакъв код, преди да се изпълни който и да е 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')
, но да я взема от мениджъра на услугата. Проблемът ми е, че не знам как да получа препратка към мениджъра на услуги в метода init на модула. Някаква помощ? или това е невъзможно в ZF2 в момента? Какъвто и вариант на тази схема или мнение също ще бъде оценен;)
РЕДАКТИРАНЕ:
Ще изясня „Очевидно Module::onBootstrap не е опция“, защото може да не е толкова тривиално;)
Методите на модули Module::onBootstrap
се изпълняват, когато се задейства събитие MvcEvent::EVENT_BOOTSTRAP
, но прикачването на метода Module::onBootstrap
на всеки модул към това събитие зависи от реда, в който модулите са били заредени. Поради това редът, в който ще бъде изпълнен конкретен Module::onBootstrap
метод, зависи от това какви други модули съществуват и как другите модули влияят на реда, в който този конкретен модул ще бъде зареден. Освен това, всеки слушател, прикачен към събитието MvcEvent::EVENT_BOOTSTRAP
с приоритет, по-голям от 1, ще бъде изпълнен преди който и да е метод на модул Module::onBootstrap
, например слушателят ViewManager::onBootstrap
. И така, да постигна това, което искам
Трябва да се изпълни някакъв код, преди да се изпълни който и да е
MvcEvent::EVENT_BOOTSTRAP
слушател
modules obBootstrap методите не са опция.