8 komentářů k článku Symfony po krůčkách – Filesystem a Finder:

  1. Ondřej Mirtes

    Stavovost Finderu
    Věřím, že obě komponenty jsou fajn, ale před pár dny mě celkem zklamal Finder a jeho „stavovost“. Pro každé nové hledání byste ideálně měli založit novou instanci, nelze ho tedy použít jako servisu v DI kontejneru.

    Pokud víckrát za sebou zavolám a proiteruju foreach ($finder->files()->name('*.php')->in($realpath) na různých adresářích, tak si Finder pamatuje soubory z toho předchozího hledání a vrátí je i při procházení dalších.

    1. Jan KlatAutor příspěvku

      Re: Stavovost Finderu
      Zrovna tady bych to bral jako žádoucí. Pokud pracuji třeba s Guzzlem taky si pro každý request nastavuji new Client()

      Nicméně jde to – pokud si v services nastavíš scope: prototype bude pokaždé předána nová instance

      1. jirkakoutny

        Re: Stavovost Finderu

        Zrovna tady bych to bral jako žádoucí. Pokud pracuji třeba s Guzzlem taky si pro každý request nastavuji new Client()

        Honzo, nevidím důvod, proč nemít třídu Client z Guzzle jako službu. Pokud chceme dělat v DI, tak bychom přeci „new“ měli používat jen u přepravek a entit. Nikdy u tříd, co poskytují větší funkcionalitu.

        Co když budeš chtít najednou všude v aplikaci do třídy Client přidat nějaké nové nastavení/závislosti?

        Jinak souhlasím s Ondrou Mirtesem, že stavovost Finderu je prasárna. Využitím shared: false v definici služby jen zachraňujeme situaci, kdy Finder vývojáři Symfony napsali blbě. Vznikne nám tak automatická továrna na objekty typu Finder.

        Pokaždé když použijeme továrnu na vytvoření objektu s nějakou větší funkcionalitou (tedy ne přepravky nebo entity), tak jsme selhali v tom, abychom dělali správné DI. Vždy je z toho udělat bezstavová služba, se kterou se dlouhodobě pracuje mnohem lépe a je to mnohem více bullet-proof řešení.

        1. Re: Stavovost Finderu
          Aha, rozumim tomu spravne ze podle vas a podle „spravneho DI“ nema zadna trida drzet zadny stav? Nemuzu si pomoct ale slovy klasika mi prijde Vas nazor zaostaly.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=16932