4 use Zend\Config\Config,
5 Zend\Di\Configuration as DiConfiguration,
7 Zend\EventManager\StaticEventManager,
8 Zend\Module\Manager as ModuleManager,
16 public function __construct(Config $config, ModuleManager $modules)
18 $this->config = $config;
19 $this->modules = $modules;
22 public function bootstrap(Application $app)
24 $this->setupLocator($app);
25 $this->setupRoutes($app);
26 $this->setupEvents($app);
29 protected function setupLocator(Application $app)
32 $di->instanceManager()->addTypePreference('Zend\Di\Locator', $di);
34 $config = new DiConfiguration($this->config->di);
35 $config->configure($di);
37 $app->setLocator($di);
40 protected function setupRoutes(Application $app)
42 $router = $app->getLocator()->get('Zend\Mvc\Router\SimpleRouteStack');
43 $router->addRoutes($this->config->routes->toArray());
44 $app->setRouter($router);
47 protected function setupEvents(Application $app)
49 $view = $this->getView($app);
50 $locator = $app->getLocator();
51 $events = $app->events();
52 $staticEvents = StaticEventManager::getInstance();
54 foreach ($this->modules->getLoadedModules() as $name => $module) {
55 if (method_exists($module, 'registerApplicationListeners')) {
56 $module->registerApplicationListeners($events, $locator, $this->config);
59 if (method_exists($module, 'registerStaticListeners')) {
60 $module->registerStaticListeners($staticEvents, $locator, $this->config);
65 protected function getView($app)
67 $di = $app->getLocator();
68 $view = $di->get('view');
69 $url = $view->plugin('url');
70 $url->setRouter($app->getRouter());
72 $view->plugin('headTitle')->setSeparator(' - ')
73 ->setAutoEscape(false)
74 ->append('Application');