$ moduleManager-> getEventManager () -> getSharedManager () -> attach не работает в стабильном zf2

namespace Auth; use Zend\ModuleManager\ModuleManager; class Module { public function init(ModuleManager $moduleManager) { $sharedEvents = $moduleManager->getEventManager()->getSharedManager(); $sharedEvents->attach(__NAMESPACE__, 'dispatch', function($e) { echo "I am init module dispatch"; exit(); }, 100); } } 

$moduleManager->getEventManager()->getSharedManager()->attach() отлично работает в ZF2 BETA5, но не работает в стабильной финальной версии.

Выключена ли эта функция в финальном выпуске?
Как я могу сделать эту работу в финальной версии ZF2?

 public function onBootstrap(MvcEvent $e) { $application = $e->getApplication(); $sharedManager = $application->getEventManager()->getSharedManager(); $sharedEvents->attach(__NAMESPACE__, 'dispatch', function($e) { echo "I am init module dispatch"; exit(); }, 100); } 

В бета-серии zend framework2

 Auth\src\User\Controller\UserController.php 

но в финальном выпуске zf2 это не сработает. Основная папка пространства имен должна совпадать точно так же, как в папке src. так что выше будет работать только так

 Auth\src\Auth\Controller\UserController.php or User\src\User\Controller\UserController.php 

Не забудьте изменить пространства имен и пути в файлах module.php и module.config.php и контроллера.

Есть два пути:

Вы можете получить его из метода init.php init, передав ему объект ModuleManger, а затем modulemanager-> getEventManager.

Или из метода onBootstrap снова в Module.php, но не из ModuleManager, а с помощью объекта приложения, как это делал Абдул.

Помните, что для каждого запроса страницы запускаются методы init и onBoostrap. Регистрация событий там хорошо, но не кладите туда тяжелые вещи. Я предпочитаю sharedEventManager, поскольку он доступен, даже если служба инициализируется в будущем.

Ура!