Próbuję zbudować prostą usługę do renderowania różnych typów stron. Podstawową koncepcją jest coś takiego:Strategia w Symfony2
$somePageType = new PageType(...);
$this->get('page.service')->render($somePagetype);
... który zostałby zaprojektowany jako Strategy pattern. Typy stron implementowałyby interfejs za pomocą metody render
i wywoływałyby go w postaci page.service
. Problem polega na tym, że chciałbym używać Doctrine w klasach typu strony. Jakie są moje opcje tutaj? Chciałbym uniknąć tworzenia usługi dla każdej z tych klas. Czy to w ogóle jest możliwe? Czy można uczynić je pojemnymi, nie będąc usługami? Być może w przyszłości niektóre typy stron mogą wymagać czegoś więcej niż tylko Doctrine, więc muszę o tym pamiętać.
To nie jest dobre, aby przekazać pojemnik. Jeśli jego obiekt wymaga doktryny, powinien go wymagać, dodając parametr do konstruktora dla obiektu doktryny. – meze
@meze oczywiście, ale co, jeśli każda strategia ma różne zależności. To byłby jedyny sposób. Jednak osobiście zdefiniowałbym wszystkie strategie jako usługi. – gilden
i jak testowałbyś swoje strategie? użyć ponownie w innym projekcie bez symfony? – meze