![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%) ![]() ![]() |
Mam wątpliwość odnośnie deklaracji typów wstrzykiwanych do np. kontrolera obiektów. Jakiś czas temu dowiedziałem się, że gdy np. moja metoda zwraca tylko obiekt konkretnej klasy, to powinienem zadeklarować jako typ tę konkretną klasę. Jeśli zwraca jakiś obiekt z grupy klas o podobnej właściwości, to powinienem jako typ wskazać wspólny interfejs, który implementują. Gdy zwraca totalnie różne i niepowiązane klasy, to można użyć typu "object". A jak jest przy wstrzykiwaniu w konstruktorze np. do kontrolera? Powinienem wstrzykiwać obiekty wskazując jako typ interfejsy czy starczy podanie konkretnej klasy? Pytam pod kątem testów jednostkowych w np. PHPUnit. Przeczytałem w artykule na temat zasad SOLID, iż należy używać możliwie największego typu abstrakcji. Jednak deklarowanie wszędzie, gdzie się tylko da, jako typów interfejsów jest dość uciążliwe i nie mam pewności, czy właściwe. Czy nie wystarczy, jeśli użyję jako typ interfejsu tylko w sytuacjach, gdy chcę używać testów? A dla całej reszty przypadków wstrzykiwać obiekty podając jako typ konkretną klasę... Jak to jest? Kiedy muszę deklarować jako typ interfejsy, a kiedy mogę deklarować konkretne klasy?
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 18:53 |