0

Мне нужна помощь с Zend \ Di;Как настроить Zend Di

Я устал от задачи писать фабрики в своем приложении с помощью Zend \ ServiceManager, я хочу понять, как работать с конфигурацией в среде MVC Zend \ Di.

Я вижу this post of @Ocramius с некоторой конфигурации в module.config.php, в верхней ключа di:

<?php 

return array(
    'di' => array(
     'allowed_controllers' => array(
      // this config is required, otherwise the MVC won't even attempt to ask Di for the controller! 
      'Application\Controller\GreetingController', 
     ), 

     'instance' => array(
      'preference' => array(
       // these allow injecting correct EventManager and ServiceManager 
       // (taken from the main ServiceManager) into the controller, 
       // because Di doesn't know how to retrieve abstract types. These 
       // dependencies are inherited from Zend\Mvc\Controller\AbstractController 
       'Zend\EventManager\EventManagerInterface' => 'EventManager', 
       'Zend\ServiceManager\ServiceLocatorInterface' => 'ServiceManager', 
      ), 
     ), 
    ), 
    // remaining config 
); 

Любой желающий может опубликовать URL в документ этой конфигурации или более подробных примеров здесь?

ответ

1

Если у вас есть много различных контроллеров и есть много услуг на выбор, а затем те, с конфигурацией или аннотации должны быть выбор в этой ссылке: https://github.com/ralphschindler/Zend_DI-Examples

Я думаю, вы должны смотреть на некоторые библиотеки как Aura.Di или Pimple. Они обеспечивают даже мощные контейнеры DI.

Если у вас минимальные услуги для инъекций, используйте инициализаторы. Проверьте это: http://akrabat.com/zend-framework-2/zendservicemanager-configuration-keys/

+0

Не то же самое и не может иметь много инициализаторов, каждый из которых выполняется по каждому запросу менеджеру службы. –

+1

Если у вас много разных контроллеров и у вас есть множество услуг на выбор, то в настройках или аннотации должны быть указаны следующие варианты: https: //github.com/ralphschindler/Zend_DI-Examples – Pradeep

+0

Спасибо, Я попытаюсь использовать это в ключевом слове module.config.php. Печально, что у него нет хорошо документированного способа сделать это. Измените свой ответ или ответ еще раз, чтобы выбрать правильный. –

Смежные вопросы