From: Ralph Schindler Date: Thu, 10 May 2012 19:05:42 +0000 (-0500) Subject: Initial wiring of ServiceManager over DI for MVC X-Git-Url: http://git.inspyration.org/?a=commitdiff_plain;ds=inline;h=fe41037cd7eec32a9f2b8bb0a84b80bc7f6def65;p=zf2.biz%2Fgalerie.git Initial wiring of ServiceManager over DI for MVC --- diff --git a/config/application.config.php b/config/application.config.php index 9edb86d..4c27d23 100644 --- a/config/application.config.php +++ b/config/application.config.php @@ -11,4 +11,9 @@ return array( './vendor', ), ), + 'service_manager' => array( + 'use_defaults' => true, + 'factories' => array( + ) + ) ); diff --git a/module/Application/config/module.config.php b/module/Application/config/module.config.php index 6a300aa..275f8b3 100644 --- a/module/Application/config/module.config.php +++ b/module/Application/config/module.config.php @@ -1,124 +1,51 @@ array( - 'instance' => array( - - // Setup for controllers. - - // Injecting the plugin broker for controller plugins into - // the action controller for use by all controllers that - // extend it - 'Zend\Mvc\Controller\ActionController' => array( - 'parameters' => array( - 'broker' => 'Zend\Mvc\Controller\PluginBroker', + 'routes' => array( + 'default' => array( + 'type' => 'Zend\Mvc\Router\Http\Segment', + 'options' => array( + 'route' => '/[:controller[/:action]]', + 'constraints' => array( + 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', + 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', ), - ), - 'Zend\Mvc\Controller\PluginBroker' => array( - 'parameters' => array( - 'loader' => 'Zend\Mvc\Controller\PluginLoader', - ), - ), - - // Setup for router and routes - 'Zend\Mvc\Router\RouteStackInterface' => array( - 'parameters' => array( - 'routes' => array( - 'default' => array( - 'type' => 'Zend\Mvc\Router\Http\Segment', - 'options' => array( - 'route' => '/[:controller[/:action]]', - 'constraints' => array( - 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', - 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', - ), - 'defaults' => array( - 'controller' => 'Application\Controller\IndexController', - 'action' => 'index', - ), - ), - ), - 'home' => array( - 'type' => 'Zend\Mvc\Router\Http\Literal', - 'options' => array( - 'route' => '/', - 'defaults' => array( - 'controller' => 'Application\Controller\IndexController', - 'action' => 'index', - ), - ), - ), - ), - ), - ), - - // Setup for the view layer. - - // Using the PhpRenderer, which just handles html produced by php - // scripts - 'Zend\View\Renderer\PhpRenderer' => array( - 'parameters' => array( - 'resolver' => 'Zend\View\Resolver\AggregateResolver', - ), - ), - // Defining how the view scripts should be resolved by stacking up - // a Zend\View\Resolver\TemplateMapResolver and a - // Zend\View\Resolver\TemplatePathStack - 'Zend\View\Resolver\AggregateResolver' => array( - 'injections' => array( - 'Zend\View\Resolver\TemplateMapResolver', - 'Zend\View\Resolver\TemplatePathStack', - ), - ), - // Defining where the layout/layout view should be located - 'Zend\View\Resolver\TemplateMapResolver' => array( - 'parameters' => array( - 'map' => array( - 'layout/layout' => __DIR__ . '/../view/layout/layout.phtml', - ), - ), - ), - // Defining where to look for views. This works with multiple paths, - // very similar to include_path - 'Zend\View\Resolver\TemplatePathStack' => array( - 'parameters' => array( - 'paths' => array( - 'application' => __DIR__ . '/../view', - ), - ), - ), - // View for the layout - 'Zend\Mvc\View\DefaultRenderingStrategy' => array( - 'parameters' => array( - 'layoutTemplate' => 'layout/layout', - ), - ), - // Injecting the router into the url helper - 'Zend\View\Helper\Url' => array( - 'parameters' => array( - 'router' => 'Zend\Mvc\Router\RouteStackInterface', - ), - ), - // Configuration for the doctype helper - 'Zend\View\Helper\Doctype' => array( - 'parameters' => array( - 'doctype' => 'HTML5', - ), - ), - // View script rendered in case of 404 exception - 'Zend\Mvc\View\RouteNotFoundStrategy' => array( - 'parameters' => array( - 'displayNotFoundReason' => true, - 'displayExceptions' => true, - 'notFoundTemplate' => 'error/404', + 'defaults' => array( + 'controller' => 'IndexController', + 'action' => 'index', ), ), - // View script rendered in case of other exceptions - 'Zend\Mvc\View\ExceptionStrategy' => array( - 'parameters' => array( - 'displayExceptions' => true, - 'exceptionTemplate' => 'error/index', + ), + 'home' => array( + 'type' => 'Zend\Mvc\Router\Http\Literal', + 'options' => array( + 'route' => '/', + 'defaults' => array( + 'controller' => 'IndexController', + 'action' => 'index', ), ), ), ), -); + 'controllers' => array( + 'IndexController' => 'Application\Controller\IndexController' + ), + 'view' => array( + 'display_not_found_reason' => true, + 'display_exceptions' => true, + 'not_found_template' => 'error/404', + 'exception_template' => 'error/index', + 'template_map' => array( + 'layout/layout' => __DIR__ . '/../view/layout/layout.phtml', + 'index/index' => __DIR__ . '/../view/index/index.phtml', + 'error/404' => __DIR__ . '/../view/error/404.phtml', + 'error/index' => __DIR__ . '/../view/error/index.phtml', + ), + 'template_path_stack' => array( + 'application' => __DIR__ . '/../view', + ), + ), + 'db' => array( + 'driver' => 'Pdo-Sqlite', + 'dbname' => 'path/to/data/database.sqlite' + ) +); \ No newline at end of file diff --git a/public/index.php b/public/index.php index edd629b..2868a5c 100644 --- a/public/index.php +++ b/public/index.php @@ -1,25 +1,21 @@ getConfigListener()->addConfigGlobPath("config/autoload/*.php"); - +// setup autoloader +AutoloaderFactory::factory(); -$moduleManager = new Zend\Module\Manager($appConfig['modules']); -$events = $moduleManager->events(); -$events->setSharedManager($sharedEvents); -$events->attach($defaultListeners); -$moduleManager->loadModules(); +// get application stack configuration +$configuration = include 'config/application.config.php'; -// Create application, bootstrap, and run -$bootstrap = new Zend\Mvc\Bootstrap($defaultListeners->getConfigListener()->getMergedConfig()); -$bootstrap->events()->setSharedManager($sharedEvents); -$application = new Zend\Mvc\Application; -$bootstrap->bootstrap($application); -$application->run()->send(); +// setup service manager +$serviceManager = new ServiceManager(new ServiceManagerConfiguration($configuration['service_manager'])); +$serviceManager->setService('ApplicationConfiguration', $configuration); +$serviceManager->get('ModuleManager')->loadModules(); + +// run application +$serviceManager->get('Application')->bootstrap()->run()->send();