4 use Zend\Di\Configuration as DiConfiguration,
6 Zend\EventManager\StaticEventManager,
7 Zend\Module\Manager as ModuleManager,
9 Zend\Mvc\Router\Http\TreeRouteStack as Router;
14 * @var \Zend\Config\Config
23 public function __construct(ModuleManager $modules)
25 $this->modules = $modules;
26 $this->config = $modules->getMergedConfig();
29 public function bootstrap(Application $app)
31 $this->setupLocator($app);
32 $this->setupRoutes($app);
33 $this->setupEvents($app);
36 protected function setupLocator(Application $app)
39 $di->instanceManager()->addTypePreference('Zend\Di\Locator', $di);
41 $config = new DiConfiguration($this->config->di);
42 $config->configure($di);
44 $app->setLocator($di);
47 protected function setupRoutes(Application $app)
49 $router = new Router();
50 $router->addRoutes($this->config->routes);
51 $app->setRouter($router);
54 protected function setupEvents(Application $app)
56 $view = $this->getView($app);
57 $locator = $app->getLocator();
58 $events = $app->events();
59 $staticEvents = StaticEventManager::getInstance();
61 foreach ($this->modules->getLoadedModules() as $name => $module) {
62 if (method_exists($module, 'registerApplicationListeners')) {
63 $module->registerApplicationListeners($events, $locator, $this->config);
66 if (method_exists($module, 'registerStaticListeners')) {
67 $module->registerStaticListeners($staticEvents, $locator, $this->config);
72 protected function getView($app)
74 $di = $app->getLocator();
75 $view = $di->get('view');
76 $url = $view->plugin('url');
77 $url->setRouter($app->getRouter());
79 $view->plugin('headTitle')->setSeparator(' - ')
80 ->setAutoEscape(false)
81 ->append('Application');