Odpovídáte na názor ke článku PHP Jet - Dependency Injection, továrny a tak dále.
Zdravim na jedne strane pisete ze si zakladate na cislech a faktech pritom ale zadna neuvadite vidim tu pouze dojmy. pisete ze je "obecnejsi a flexibilnejsi nez Nette / Symfony" tak mi prosim ukazte jak jednoduse zmenite DB ne pro celou aplikaci ale pro jednu konkretni komponentu.
Rikate nastudujte si: ale tady neni moc co studovat to co vy prezentujete jako DI je naprosto bezna vec ServiceLocator jak uz tu jini psaly. Na tom paternu neni vubec nic spatneho a sve uziti ma jen to principielne neni nic jineho nez Globalni promena a nese si sebou vyhody / nevyhody s tim spojene.
Pisete:
Měnit třeba parametry konstruktoru v celém projektu, nebo na X velkých projektech? Naprosto nemyslitélné.To mi prijde ze naopak vy jste neco nepochopil jak funguje moderni DI v projektech jako symfony / nette / Spring protoze zmenit konstruktor je opravdu jenom o tom ze zmenim konstruktor po vetsinou prave na 2 mistech
Nikde jinde s konstruktorem nepracuji vse za me udela DI kontejner a ja mam naprosto volnou ruku. pouzivat vytvaret si instance rucne uz se az na vyjimky proste nenosi a vyzraly DI kontejner za me udela veskerou spinavou praci ja proste jen reknu ze chci v konstruktoru novou sluzbu "Logger" a taky ji tam dostanu tecka a to i kdyz se ma servisa pouziva na dalsich 100 mistech v projeku.
Mimochodem zrovna u testu se opet sam sebe vyvracite:
Jako uživatel třídy neřeším její vnitřní implementaci. Nezajímá mě. Vím jaké má třída vnější rozhraní a to používám.
Jak napisete test na servisu?
class A{
public function doSomething(int $number){
}
}
pokud se uvnitr vola Product::get() ? vy to ani nemate jak poznat.. ale najednou pisete test a musite se podivat do strev dane classy abyjste videl co vsechno potrebuje ke svemu behu coz je v primem rozporu s tvrzenim "neřeším její vnitřní implementaci. Nezajímá mě. Vím jaké má třída vnější rozhraní a to používám."
Přečteno 20 856×
Přečteno 18 734×
Přečteno 17 893×
Přečteno 17 644×
Přečteno 16 401×