Initial wiring of ServiceManager over DI for MVC
authorRalph Schindler <ralphschindler@yahoo.com>
Thu, 10 May 2012 19:05:42 +0000 (14:05 -0500)
committerRalph Schindler <ralphschindler@yahoo.com>
Thu, 10 May 2012 19:05:42 +0000 (14:05 -0500)
config/application.config.php
module/Application/config/module.config.php
public/index.php

index 9edb86d..4c27d23 100644 (file)
@@ -11,4 +11,9 @@ return array(
             './vendor',
         ),
     ),
+    'service_manager' => array(
+        'use_defaults' => true,
+        'factories' => array(
+        )
+    )
 );
index 6a300aa..275f8b3 100644 (file)
 <?php
 return array(
-    'di' => 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
index edd629b..2868a5c 100644 (file)
@@ -1,25 +1,21 @@
 <?php
 chdir(dirname(__DIR__));
 require_once (getenv('ZF2_PATH') ?: 'vendor/ZendFramework/library') . '/Zend/Loader/AutoloaderFactory.php';
-Zend\Loader\AutoloaderFactory::factory();
 
-$appConfig = include 'config/application.config.php';
+use Zend\Loader\AutoloaderFactory,
+Zend\ServiceManager\ServiceManager,
+Zend\Mvc\Service\ServiceManagerConfiguration;
 
-$sharedEvents     = new Zend\EventManager\SharedEventManager();
-$listenerOptions  = new Zend\Module\Listener\ListenerOptions($appConfig['module_listener_options']);
-$defaultListeners = new Zend\Module\Listener\DefaultListenerAggregate($listenerOptions);
-$defaultListeners->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();