Zend Framework 2 Service Manager 配置方法

我們通常會把Service Manager配置在兩個地方

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

Application services

Manager Application services
Manager class Zend\ServiceManager\ServiceManager
Config key service_manager
Module method getServiceConfig()
Module interface ServiceProviderInterface
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{
    public function getServiceConfig(){
        return array(
            'invokables' => array(   ),
            // 也可以添加其他服務
        );
    }
    // 省略其他Module.php代碼
}

Controllers

Manager Controllers
Manager class Zend\Mvc\Controller\ControllerManager
Config key controllers
Module method getControllerConfig()
Module interface ControllerProviderInterface
Service name ControllerLoader

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手動調用
    public function getControllerConfig()
    {
        return array(
            'invokables' => array(
                'Application\Controller\Index' => 'Application\Controller\IndexController',
            ),
            // 也可以添加其他服務
        );
    }
    // 省略其他Module.php代碼
}

Controller plugins

Manager Controller plugins
Manager class Zend\Mvc\Controller\PluginManager
Config key controller_plugins
Module method getControllerPluginConfig()
Module interface ControllerPluginProviderInterface
Service name ControllerPluginManager

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{
    public function getControllerPluginConfig()
    {
        return array(
            'invokables' => array(
                 // ...
            ),
            // 也可以添加其他服務
        );
    }
    // 省略其他Module.php代碼
}

View helpers

Manager View helpers
Manager class Zend\View\HelperPluginManager
Config key view_helpers
Module method getViewHelperConfig()
Module interface ViewHelperProviderInterface
Service name ViewHelperManager

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{
    public function getViewHelperConfig()
    {
        return array(
            'factories' => array(
                'ApplicationHelper' => function  ( $helperPluginManager ) {
                    // ....
                }
            ),
            // 也可以添加其他服務
        );
    }
    // 省略其他Module.php代碼
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章