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? Если да, то какой и как?
Или есть другой, лучший способ сделать это?
Я прочитал статью о внедрении зависимостей, но до сих пор не совсем понимаю ее в этом контексте.
Итак, это это мое текущее рабочее решение: у меня есть помощник действий под названием Resource, это помощник для извлечения ресурсов из начальной загрузки, или вы можете вручную добавить к нему ресурсы: http://pastie.org/1450851
$this->_helper->Resource('em'); // get EntityManager
Может кто-нибудь, пожалуйста, предоставьте некоторое представление о влиянии на производительность хранения ресурсов начальной загрузки локально внутри вспомогательного класса? Я слишком много делаю?
TODO: Выполните рефакторинг resourcesMap вне класса.
И у меня есть помощник действий для загрузки сервисов: http://pastie.org/1450855
TODO: Добавьте проверки перед попыткой загрузки сервиса.
Пожалуйста, критикуйте вышеизложенное:)