Помощь с внедрением зависимостей в приложение MVC

Zend Framework / Doctrine 2 application.:

/app
    /modules
        /blog
            /controllers
                /BlogController.php
            /domain
                /entities
                /services
                    /PostService.php
                /repositories

PostService отвечает за базовые операции CRUD, работая напрямую с сущностями и EntityManager для абстрагирования бизнес-логики и логики сохранения. моих контроллеров.

Если возможно, я хотел бы сохранить свои услуги как POPO. Как лучше всего получить доступ / внедрить EntityManager в мой класс обслуживания? Я новичок в DI, отсюда и этот вопрос. EntityManager доступен как ресурс начальной загрузки в моих контроллерах.

Должен ли я просто написать абстрактный класс для служб для доступа к EntityManager? Должен ли я написать класс для создания экземпляров моих сервисов, внедряя EntityManager через конструктор / установщик? ... который будет включать интерфейс для моих сервисов. Должен ли я использовать структуру DI? Если да, то какой и как?

Или есть другой, лучший способ сделать это?

Я прочитал статью о внедрении зависимостей, но до сих пор не совсем понимаю ее в этом контексте.


Обновление (12 января 2011 г.)

Итак, это это мое текущее рабочее решение: у меня есть помощник действий под названием Resource, это помощник для извлечения ресурсов из начальной загрузки, или вы можете вручную добавить к нему ресурсы: http://pastie.org/1450851

$this->_helper->Resource('em'); // get EntityManager

Может кто-нибудь, пожалуйста, предоставьте некоторое представление о влиянии на производительность хранения ресурсов начальной загрузки локально внутри вспомогательного класса? Я слишком много делаю?
TODO: Выполните рефакторинг resourcesMap вне класса.

И у меня есть помощник действий для загрузки сервисов: http://pastie.org/1450855
TODO: Добавьте проверки перед попыткой загрузки сервиса.

Пожалуйста, критикуйте вышеизложенное:)

9
задан Cobby 11 January 2011 в 16:39
поделиться