В моем проекте SF3, у меня есть две услуг, которые зависят друг от друга и вызывают круговой вопрос референции:службы со ссылкой сборкой из Symfony3
page_handler :
arguments : ["@sentence_handler"]
sentence_handler :
arguments : ["@page_handler"]
Потому что, из класса PageHandler я использую SentenceHandler добавить предложение на страницу , и из SentenceHandler я использую PageHandler для получения всех предложений от страницы.
Я замечаю 3 варианта, чтобы исправить это:
- Перенести мой метод addSentence() к SentenceHandler: Но я изменю страницу из SentenceHandler, это не логично.
- Переместить метод getAllSentences() в PageHandler: Но я получаю предложения от PageHandler, это не логично.
- Дубликат GetPage() метод от PageHandler к SentenceHandler, который станет независимым: Но это не DRY
Что такое лучший метод? У вас есть другие идеи?
Худший способ заключается в том, чтобы вводить контейнер в службу и получать соответствующую услугу по мере необходимости. Обычно избегайте делать это [http://symfony.com/doc/current/components/dependency_injection.html#avoiding-your-code-becoming-dependent-on-the-container) – Matteo
Может ли функция getPage перемещаться в это собственное обслуживание и вводится в другие обработчики? Это позаботится о ваших сухих проблемах. – Cerad