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í
×
včera 22:33 | Komunita

Společnost Red Hat na svém blogu oznámila, že Red Hat Enterprise Linux (RHEL) bude možné provozovat zdarma na 16 serverech.

Ladislav Hagara | Komentářů: 13
včera 14:55 | Bezpečnostní upozornění

Pod společným názvem DNSpooq byly zveřejněny informace o 7 bezpečnostních chybách v DNS caching a DHCP serveru dnsmasq. Jedná se o cache poisoning (CVE-2020-25686, CVE-2020-25684, CVE-2020-25685) a buffer overflow (CVE-2020-25687, CVE-2020-25683, CVE-2020-25682, CVE-2020-25681). Jejich kombinací lze dosáhnout závažnosti CVSS 9.8. Chyby jsou opraveny v dnsmasq 2.83.

Ladislav Hagara | Komentářů: 2
včera 13:33 | Nová verze

Byla vydána nová stabilní verze 19.07.6 (Changelog) linuxové distribuce primárně určené pro routery a vestavěné systémy OpenWrt (Wikipedie). Řešena je také řada bezpečnostních chyb. Především v dnsmasq (DNSpooq).

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

Google Chrome 88 byl prohlášen za stabilní (YouTube). Nejnovější stabilní verze 88.0.4324.96 přináší řadu oprav a vylepšení. Vylepšeny byly také nástroje pro vývojáře (YouTube). Opraveno bylo 36 bezpečnostních chyb. Nálezci nejvážnější z nich (CVE-2021-21117) bylo vyplaceno 30 000 dolarů.

Ladislav Hagara | Komentářů: 11
včera 07:00 | Nová verze

Byla vydána nová verze 4.4.2 svobodného programu pro skicování, malování a úpravu obrázků Krita (Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
19.1. 14:33 | Komunita

Vedle Hectora "marcan" Martina a Asahi Linuxu portují Linux na Apple Silicon aneb na počítače Apple s novým ARM procesorem M1 také lidé ze společnosti Corellium. V sobotu se na Twitteru pochlubili bootováním Linuxu na M1. Dnes zveřejnili zdrojové kódy (Preloader-M1 a Linux-M1).

Ladislav Hagara | Komentářů: 54
19.1. 11:33 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje na kritické zranitelnosti v Orbit Fox pluginu pro WordPress. Správci CMS WordPress, kteří mají nainstalované rozšíření Orbit Fox, by měli provést co nejdříve upgrade rozšíření na poslední verzi 2.10.3. Dvě nedávno nalezené zranitelnosti, stored XSS a možnost eskalace oprávnění, umožňují útočníkovi kompletní ovládnutí webové stránky.

Ladislav Hagara | Komentářů: 0
19.1. 11:11 | Zajímavý projekt

bladeRF-wiphy je open source IEEE 802.11 / Wi-Fi kompatibilní SDR VHDL modem pro bladeRF 2.0 micro xA9. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv2.

Ladislav Hagara | Komentářů: 0
19.1. 09:11 | Bezpečnostní upozornění

V sobotu brzo ráno někdo naboural administrátorský účet diskusního fóra OpenWrt a odcizil citlivá data uživatelů (emailové adresy, API klíče, statistiky, ...).

Ladislav Hagara | Komentářů: 1
19.1. 08:00 | Nová verze

Byla vydána verze 1.9.0 emulátoru terminálu Terminology (GitHub) postaveného nad EFL (Enlightenment Foundation Libraries). Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 4
Jestliže používáte distribuci CentOS, kterou náhradu plánujete vzhledem k oznámenému ukončení vydávání?
 (29%)
 (2%)
 (2%)
 (23%)
 (0%)
 (2%)
 (42%)
Celkem 175 hlasů
 Komentářů: 3, poslední 10.1. 13:01
Rozcestník

Dotaz: PHP a Dependency Injection

12.10.2020 21:49 Fanda
PHP a Dependency Injection
Přečteno: 145×
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 debian+ | skóre: 23 | blog: analyzy
Rozbalit Rozbalit vše Re: PHP a Dependency Injection
debian.plus@protonmail.com
12.10.2020 23:10 Kit | skóre: 45 | 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.