<?php
return new Zend\Config\Config(array(
- 'bootstrap_class' => 'Application\Bootstrap',
'module_paths' => array(
realpath(__DIR__ . '/../modules'),
),
use InvalidArgumentException,
Zend\Module\Manager,
Zend\Config\Config,
- Zend\Di\Locator,
- Zend\EventManager\EventCollection,
- Zend\EventManager\StaticEventCollection;
+ Zend\EventManager\StaticEventManager;
class Module
{
- protected $appListeners = array();
- protected $staticListeners = array();
+ protected $view;
protected $viewListener;
public function init(Manager $moduleManager)
{
$this->initAutoloader($moduleManager->getOptions()->getApplicationEnv());
+ $events = StaticEventManager::getInstance();
+ $events->attach('bootstrap', 'bootstrap', array($this, 'initializeView'), 100);
}
protected function initAutoloader($env = null)
return new Config(include __DIR__ . '/configs/module.config.php');
}
- public function registerApplicationListeners(EventCollection $events, Locator $locator, Config $config)
+ public function initializeView($e)
{
- $view = $locator->get('view');
- $viewListener = $this->getViewListener($view, $config);
- $events->attachAggregate($viewListener);
- }
-
- public function registerStaticListeners(StaticEventCollection $events, Locator $locator, Config $config)
- {
- $view = $locator->get('view');
+ $app = $e->getParam('application');
+ $locator = $app->getLocator();
+ $config = $e->getParam('modules')->getMergedConfig();
+ $view = $this->getView($app);
$viewListener = $this->getViewListener($view, $config);
-
+ $app->events()->attachAggregate($viewListener);
+ $events = StaticEventManager::getInstance();
$viewListener->registerStaticListeners($events, $locator);
}
$this->viewListener = $viewListener;
return $viewListener;
}
+
+ protected function getView($app)
+ {
+ if ($this->view) {
+ return $this->view;
+ }
+
+ $di = $app->getLocator();
+ $view = $di->get('view');
+ $url = $view->plugin('url');
+ $url->setRouter($app->getRouter());
+
+ $view->plugin('headTitle')->setSeparator(' - ')
+ ->setAutoEscape(false)
+ ->append('Application');
+ $this->view = $view;
+ return $view;
+ }
}
+++ /dev/null
-<?php
-namespace Application;
-
-use Zend\Di\Configuration as DiConfiguration,
- Zend\Di\Di,
- Zend\EventManager\StaticEventManager,
- Zend\Module\Manager as ModuleManager,
- Zend\Mvc\Application,
- Zend\Mvc\Router\Http\TreeRouteStack as Router;
-
-class Bootstrap
-{
- /**
- * @var \Zend\Config\Config
- */
- protected $config;
-
- /**
- * @var ModuleManager
- */
- protected $modules;
-
- public function __construct(ModuleManager $modules)
- {
- $this->modules = $modules;
- $this->config = $modules->getMergedConfig();
- }
-
- public function bootstrap(Application $app)
- {
- $this->setupLocator($app);
- $this->setupRoutes($app);
- $this->setupEvents($app);
- }
-
- protected function setupLocator(Application $app)
- {
- $di = new Di;
- $di->instanceManager()->addTypePreference('Zend\Di\Locator', $di);
-
- $config = new DiConfiguration($this->config->di);
- $config->configure($di);
-
- $app->setLocator($di);
- }
-
- protected function setupRoutes(Application $app)
- {
- $router = new Router();
- $router->addRoutes($this->config->routes);
- $app->setRouter($router);
- }
-
- protected function setupEvents(Application $app)
- {
- $view = $this->getView($app);
- $locator = $app->getLocator();
- $events = $app->events();
- $staticEvents = StaticEventManager::getInstance();
-
- foreach ($this->modules->getLoadedModules() as $name => $module) {
- if (method_exists($module, 'registerApplicationListeners')) {
- $module->registerApplicationListeners($events, $locator, $this->config);
- }
-
- if (method_exists($module, 'registerStaticListeners')) {
- $module->registerStaticListeners($staticEvents, $locator, $this->config);
- }
- }
- }
-
- protected function getView($app)
- {
- $di = $app->getLocator();
- $view = $di->get('view');
- $url = $view->plugin('url');
- $url->setRouter($app->getRouter());
-
- $view->plugin('headTitle')->setSeparator(' - ')
- ->setAutoEscape(false)
- ->append('Application');
- return $view;
- }
-}
);
// Create application, bootstrap, and run
-$bootstrapClass = $appConfig['bootstrap_class'];
-$bootstrap = new $bootstrapClass($moduleManager);
+$bootstrap = new Zend\Mvc\Bootstrap($moduleManager);
$application = new Zend\Mvc\Application;
$bootstrap->bootstrap($application);
$application->run()->send();