我们通常会把Service Manager配置在两个地方
1.module.config.php
2.Module.php
不同的service manager 类型有不同的配置方法
| Manager | Application services |
| Manager class | Zend\ServiceManager\ServiceManager |
| Config key | service_manager |
| Module method | getServiceConfig() |
| Module interface | ServiceProviderInterface |
// Application/config/module.config.phpreturn
array( ‘service_manager‘
=> array( ‘factories‘
=> array( ‘translator‘
=> ‘Zend\I18n\Translator\TranslatorServiceFactory‘, ‘Application\Header\Navigation‘
=> ‘Application\Navigation\HeaderNavigationFactory‘ ), // 也可以添加其他服务 ), // 省略其他module.config.php代码); |
// Application/Module.phpclass
Module{ public
function getServiceConfig(){ return
array( ‘invokables‘
=> array( ), // 也可以添加其他服务 ); } // 省略其他Module.php代码} |
| Manager | Controllers |
| Manager class | Zend\Mvc\Controller\ControllerManager |
| Config key | controllers |
| Module method | getControllerConfig() |
| Module interface | ControllerProviderInterface |
| Service name | ControllerLoader |
// Application/config/module.config.phpreturn
array( ‘controllers‘
=> array( ‘invokables‘
=> array( ‘Application\Controller\Index‘
=> ‘Application\Controller\IndexController‘, ) // 也可以添加其他服务 ), // 省略其他module.config.php代码); |
// Application/Module.phpclass
Module{ // 通过mvc自动调用,没必要通过get手动调用 public
function getControllerConfig() { return
array( ‘invokables‘
=> array( ‘Application\Controller\Index‘
=> ‘Application\Controller\IndexController‘, ), // 也可以添加其他服务 ); } // 省略其他Module.php代码} |
| Manager | Controller plugins |
| Manager class | Zend\Mvc\Controller\PluginManager |
| Config key | controller_plugins |
| Module method | getControllerPluginConfig() |
| Module interface | ControllerPluginProviderInterface |
| Service name | ControllerPluginManager |
// Application/config/module.config.phpreturn
array( ‘controller_plugins‘
=> array( ‘factories‘
=> array( ‘MyModule\Controller\Plugin\Foo‘
=> function($sm) { $plugin
= new
Plugin\Foo; $cache
= $sm->get(‘my-cache‘); $plugin->setCache($cache); return
$plugin; }, ), // 也可以添加其他服务 ), // 省略其他module.config.php代码); |
// Application/Module.phpclass
Module{ public
function getControllerPluginConfig() { return
array( ‘invokables‘
=> array( // ... ), // 也可以添加其他服务 ); } // 省略其他Module.php代码} |
| Manager | View helpers |
| Manager class | Zend\View\HelperPluginManager |
| Config key | view_helpers |
| Module method | getViewHelperConfig() |
| Module interface | ViewHelperProviderInterface |
| Service name | ViewHelperManager |
// Application/config/module.config.phpreturn
array( ‘view_helpers‘
=> array( ‘factories‘
=> array( ‘ApplicationHelper‘
=> function
( $helperPluginManager
) { // .... } ) // 也可以添加其他服务 ), // 省略其他module.config.php代码); |
// Application/Module.phpclass
Module{ public
function getViewHelperConfig() { return
array( ‘factories‘
=> array( ‘ApplicationHelper‘
=> function
( $helperPluginManager
) { // .... } ), // 也可以添加其他服务 ); } // 省略其他Module.php代码}Zend Framework 2 Service Manager 配置方法
原文:http://blog.csdn.net/benshuhuai/article/details/43057737