Мое приложение symfony2 имеет следующую структуру:Впрыскивание зависимостей и объекты модели - правильный путь?
Существует служба data_provider
, которая получает данные из разных внешних источников и представляет ее как объекты сущности.
Некоторые объекты имеют отношения. В настоящее время я загружаю отношения в контроллер или вспомогательные службы, если это необходимо.
Это не очень удобно, иногда я хочу получить отношения с моей сущностью ojbect. Для этого мне нужен доступ к услуге data_provider
.
Я хочу реализовать что-то вроде доктрины ленивой загрузки, каков правильный способ сделать это?
некоторых очевидных решений - для инъекционных data_provider
в каждой сущности instacne, или в какое-то статическое свойство, или сделать некоторые статические методы в эксплуатации, или использовать evenet диспетчер, но я не думаю, что это правильный путь
Doctrine 2 имеет ObjectManagerInterface, который имеет доступ к данным мета-сущностей и в основном отвечает за такие вещи, как отложенной загрузки. Стандартная Doctrine EntityManager реализует этот интерфейс, чтобы сделать все это волшебство. Я полагаю, что вы могли бы настроить ваш data_provider для реализации этого интерфейса, а это, в свою очередь, даст вам доступ к большому количеству функций Doctrine. Никогда не пробовал это сам, поэтому я не могу предложить какую-либо помощь в том, как это сделать. Но если это большой проект, то, возможно, стоит впасть в мужество доктрины. – Cerad
Благодарим вас за направление поиска. :) https://github.com/doctrine/common/blob/master/lib/Doctrine/Common/Persistence/PersistentObject.php Интерфейс называется 'ObjectManagerAwareInterface'. Кажется, что экземпляр ObjectManager установлен в приватном статическом свойстве класса базового объекта во время инициализации ObjectManager. – user2554865