4 use Zend\Config\Config,
5 Zend\Di\Configuration as DiConfiguration,
7 Zend\Di\DefinitionList,
9 Zend\EventManager\StaticEventManager,
10 Zend\Module\Manager as ModuleManager,
18 public function __construct(Config $config, ModuleManager $modules)
20 $this->config = $config;
21 $this->modules = $modules;
24 public function bootstrap(Application $app)
26 $this->setupLocator($app);
27 $this->setupRoutes($app);
28 $this->setupEvents($app);
31 protected function setupLocator(Application $app)
34 $di->instanceManager()->addTypePreference('Zend\Di\Locator', $di);
36 $config = new DiConfiguration($this->config->di);
37 $config->configure($di);
39 $app->setLocator($di);
42 protected function setupRoutes(Application $app)
44 $router = $app->getLocator()->get('Zend\Mvc\Router\SimpleRouteStack');
45 $router->addRoutes($this->config->routes->toArray());
46 $app->setRouter($router);
49 protected function setupEvents(Application $app)
51 $view = $this->getView($app);
52 $locator = $app->getLocator();
53 $events = $app->events();
54 $staticEvents = StaticEventManager::getInstance();
56 foreach ($this->modules->getLoadedModules() as $name => $module) {
57 if (method_exists($module, 'registerApplicationListeners')) {
58 $module->registerApplicationListeners($events, $locator, $this->config);
61 if (method_exists($module, 'registerStaticListeners')) {
62 $module->registerStaticListeners($staticEvents, $locator, $this->config);
67 protected function getView($app)
69 $di = $app->getLocator();
70 $view = $di->get('view');
71 $url = $view->plugin('url');
72 $url->setRouter($app->getRouter());
74 $view->plugin('headTitle')->setSeparator(' - ')
75 ->setAutoEscape(false)
76 ->append('Application');