Zend Framework 2 Service Manager 配置方法

来源:互联网 发布:郑州淘宝网店诈骗案例 编辑:程序博客网 时间:2024/06/11 23:40

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

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

Application services

ManagerApplication servicesManager classZend\ServiceManager\ServiceManagerConfig keyservice_managerModule 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

ManagerControllersManager classZend\Mvc\Controller\ControllerManagerConfig keycontrollersModule methodgetControllerConfig()Module interfaceControllerProviderInterfaceService 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 pluginsManager classZend\Mvc\Controller\PluginManagerConfig keycontroller_pluginsModule methodgetControllerPluginConfig()Module interfaceControllerPluginProviderInterfaceService 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 helpersManager classZend\View\HelperPluginManagerConfig keyview_helpersModule methodgetViewHelperConfig()Module interfaceViewHelperProviderInterfaceService 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代码
}
0 0
原创粉丝点击