Hlavní navigace

Názor ke článku PHP Jet - Dependency Injection, továrny a tak dále od RS - Zdravim na jedne strane pisete ze si zakladate...

  • 16. 2. 2023 10:51

    RS

    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
    • Definice servisy
    • Predani zavyslosti v unit testech

    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."