首页 > 代码库 > Zend Framework 2 Service Manager 配置方法

Zend Framework 2 Service Manager 配置方法

我们通常会把Service Manager配置在两个地方

1.module.config.php
2.Module.php
不同的service manager 类型有不同的配置方法

Application services

ManagerApplication services
Manager classZend\ServiceManager\ServiceManager
Config keyservice_manager
Module methodgetServiceConfig()
Module interfaceServiceProviderInterface
moduel.config.php
// Application/config/module.config.php
return array(
   ‘service_manager‘=> array(
       ‘factories‘=> array(
           ‘translator‘=> ‘Zend\I18n\Translator\TranslatorServiceFactory‘,
           ‘Application\Header\Navigation‘=> ‘Application\Navigation\HeaderNavigationFactory‘
       ),
       // 也可以添加其他服务
   ),
   // 省略其他module.config.php代码
);
Moduel.php
// Application/Module.php
class Module{
    publicfunction getServiceConfig(){
        returnarray(
            ‘invokables‘=> array(   ),
            // 也可以添加其他服务
        );
    }
    // 省略其他Module.php代码
}

Controllers

ManagerControllers
Manager classZend\Mvc\Controller\ControllerManager
Config keycontrollers
Module methodgetControllerConfig()
Module interfaceControllerProviderInterface
Service nameControllerLoader

module.config.php

// Application/config/module.config.php
return array(
   ‘controllers‘=> array(
        ‘invokables‘=> array(
            ‘Application\Controller\Index‘=> ‘Application\Controller\IndexController‘,
        )
        // 也可以添加其他服务
    ),
   // 省略其他module.config.php代码
);

Module.php

// Application/Module.php
class Module{
    // 通过mvc自动调用,没必要通过get手动调用
    publicfunction getControllerConfig()
    {
        returnarray(
            ‘invokables‘=> array(
                ‘Application\Controller\Index‘=> ‘Application\Controller\IndexController‘,
            ),
            // 也可以添加其他服务
        );
    }
    // 省略其他Module.php代码
}

Controller plugins

ManagerController plugins
Manager classZend\Mvc\Controller\PluginManager
Config keycontroller_plugins
Module methodgetControllerPluginConfig()
Module interfaceControllerPluginProviderInterface
Service nameControllerPluginManager

module.config.php

// Application/config/module.config.php
return 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代码
);

Module.php

// Application/Module.php
class Module{
    publicfunction getControllerPluginConfig()
    {
        returnarray(
            ‘invokables‘=> array(
                 // ...
            ),
            // 也可以添加其他服务
        );
    }
    // 省略其他Module.php代码
}

View helpers

ManagerView helpers
Manager classZend\View\HelperPluginManager
Config keyview_helpers
Module methodgetViewHelperConfig()
Module interfaceViewHelperProviderInterface
Service nameViewHelperManager

module.config.php

// Application/config/module.config.php
return array(
   ‘view_helpers‘=> array(
        ‘factories‘=> array(
            ‘ApplicationHelper‘=> function  ( $helperPluginManager ) {
                // ....
            }
        )
        // 也可以添加其他服务
    ),
   // 省略其他module.config.php代码
);

Module.php

// Application/Module.php
class Module{
    publicfunction getViewHelperConfig()
    {
        returnarray(
            ‘factories‘=> array(
                ‘ApplicationHelper‘=> function  ( $helperPluginManager ) {
                    // ....
                }
            ),
            // 也可以添加其他服务
        );
    }
    // 省略其他Module.php代码
}

Zend Framework 2 Service Manager 配置方法