abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 03:44 | Nová verze

    Bitwig Studio (Wikipedie) bylo vydáno ve verzi 6. Jedná se o proprietární multiplatformní (macOS, Windows, Linux) digitální pracovní stanici pro práci s audiem (DAW).

    Ladislav Hagara | Komentářů: 0
    dnes 02:11 | Komunita

    Společnost Igalia představila novou linuxovou distribuci (framework) s názvem Moonforge. Jedná se o distribuci určenou pro vestavěné systémy. Vychází z projektů Yocto a OpenEmbedded.

    Ladislav Hagara | Komentářů: 0
    dnes 00:44 | Nová verze

    Google Chrome 146 byl prohlášen za stabilní. Nejnovější stabilní verze 146.0.7680.71 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 29 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    dnes 00:22 | Nová verze

    D7VK byl vydán ve verzi 1.5. Jedná se o fork DXVK implementující překlad volání Direct3D 3 (novinka), 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.

    Ladislav Hagara | Komentářů: 0
    včera 23:22 | Nová verze

    Bylo vydáno Eclipse IDE 2026-03 aneb Eclipse 4.39. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 10:22 | Upozornění

    Ze systému Slavia pojišťovny uniklo přibližně 150 gigabajtů citlivých dat. Jedná se například o pojistné dokumenty, lékařské záznamy nebo přímou komunikaci s klienty. Za únik může chyba dodavatelské společnosti.

    Ladislav Hagara | Komentářů: 8
    včera 10:11 | IT novinky

    Sněmovna propustila do dalšího kola projednávání vládní návrh zákona o digitální ekonomice, který má přinést bezpečnější on-line prostředí. Reaguje na evropské nařízení DSA o digitálních službách a upravuje třeba pravidla pro on-line tržiště nebo sociální sítě a má i víc chránit děti.

    Ladislav Hagara | Komentářů: 22
    včera 09:33 | IT novinky

    Meta převezme sociální síť pro umělou inteligenci (AI) Moltbook. Tvůrci Moltbooku – Matt Schlicht a Ben Parr – se díky dohodě stanou součástí Meta Superintelligence Labs (MSL). Meta MSL založila s cílem sjednotit své aktivity na poli AI a vyvinout takovou umělou inteligenci, která překoná lidské schopnosti v mnoha oblastech. Fungovat by měla ne jako centralizovaný nástroj, ale jako osobní asistent pro každého uživatele.

    Ladislav Hagara | Komentářů: 0
    včera 00:22 | Nová verze

    Byla vydána betaverze Fedora Linuxu 44 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 14. dubna.

    Ladislav Hagara | Komentářů: 0
    10.3. 12:11 | IT novinky

    Open source router Turris Omnia NG Wired je v prodeji. Jedná se o Turris Omnia NG bez Wi-Fi. Je připraven pro zamontování do racku.

    Ladislav Hagara | Komentářů: 6
    Které desktopové prostředí na Linuxu používáte?
     (16%)
     (6%)
     (0%)
     (11%)
     (29%)
     (2%)
     (5%)
     (2%)
     (13%)
     (25%)
    Celkem 1053 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: PHP a Dependency Injection

    12.10.2020 21:49 Fanda
    PHP a Dependency Injection
    Přečteno: 315×
    Zdravim,

    potreboval bych si, s vasi laskavou pomoci, ujasnit jeste nektere "best practices". Za kazdou nasledujici vetou si prosim domyslete otaznik

    Dependency injection je, kdyz... predam tride jeji zavislosti pres konstruktor. Zavislostmi myslim instance jinych trid, ktere dotycna trida potrebuje. A kdyz je tech zavislosti hodne, a potrebuji casto vytvaret instanci te tridy, tak si na to udelam Factory

    Chapu to treba u databaze. Kdy tride, ktera potrebuje pristupovat k databazi, predam nejaky databazovy adapter, ktery muzu pozdeji predelat treba z MySQL na Postgres a nebudu muset danou tridu prepisovat. Prepisu jenom ten adapter

    Ale ma smysl predavat pres konstruktor i takove tridy jako DateTime, DateInterval, DatePeriod?

    Jako mam takove simrani, ze to smysl ma. Pak preci staci kouknout na konstruktor te tridy, a vyctu odtama vsechny jeji zavislosti. Nemusim prohlizet tridu celou

    A ma smysl si ke vsem zavislostem vytvaret vlastni "adaptery"?

    Jo treba tridy MyDateTime, MyDateInterval, ... kde sice nebudu dedit z DateTime, DateInterval, abych nemusel resit argumenty jejich konstruktoru, ale kde si v konstruktoru udelam instanci te DateTime, a nadefinuju si vlastni metody, takze kdyby mi v budoucnu preskocilo, a chtel bych misto DateTime pouzit jinou tridu, tak mi staci prepsat jen ten adapter

    Neni to uz trochu overkill? Kdyz se vlastne jedna o "nativni" PHP tridy?

    Kde je ta hranice, kdy ma smysl delat adaptery/interfejsy, a kde uz je to zbytecny?

    Diky

    Řešení dotazu:


    Odpovědi

    12.10.2020 21:58 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: PHP a Dependency Injection
    debian.plus@protonmail.com
    12.10.2020 23:10 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PHP a Dependency Injection
    Není to tak složité, jak to vypadá. Představ si, že máš třídu Item s položkou ceníku, u které chceš prezentovat částku ve více měnách. Některá má "Kč" za částkou, jiná "$" před částkou, některá s desetinnou tečkou, jiná s čárkou. Počet desetinných míst může být také různý. Tentýž problém můžeš řešit na mnoha místech programu a proto se vyplatí mít na to samostatnou třídu, resp. sadu tříd.

    Vytvoříš si objekt, který bude specifický pro každou měnu. Ten objekt bude mít metodu format(), která bude umět převést částku na string.
    $currency = new Dollar();
    echo $item->formatPrice($currency);
    
    Té metodě předáš v parametru objekt, který umí zformátovat částku metodou format(). Metoda formatPrice() bude tedy obsahovat:
    return $currency->format($this->price);
    
    Když změníš měnu, tak nemusíš měnit třídu Item, ale do $currency vložíš instanci jiné třídy, například Euro. Může to umět třeba i kurzový přepočet. Ta třída může obsahovat více metod, třeba pro výstup URL s obrázkem měny.

    Totéž můžeš udělat i s kostruktorem, ale dá se to použít u jakékoli metody.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.