Kategórie článkov

PHP OOP: Faux-pas volania konštruktora predka

Ak pod pojmom stav chápeme ako možnú kombináciu vlastností objektu, tak každý objekt sa musí inicializovať na počiatočný stav, aby mohol správne fungovať.

Čo je konštruktor? Je to metóda, ktorá je volaná automaticky pri vzniku objektu, teda keď sa vytvára inštancia triedy. Konštruktor napomáha k tomu, aby sme objekt inicializovali na počiatočný stav.

Dedenie je preberanie vlastností z predka (pôvodná trieda) na potomka (špecializovaná trieda). Dedenie vytvára statickú väzbu medzi triedami tak, že trieda potomka preberá vlastnosti predka.

Klasický prístup v iných jazykoch objektovo orientovaného programovania je ten, že konštruktor predka je automaticky zavolaný v konštruktu potomka. Napr. v Jave je to vymyslené tak, že konštruktor predka je volaný automaticky, jedine, že by si používateľ zavolal explicitne konštruktor potomka. Má to tú výhodu, že si používateľ môže vybrať riadok v konštruktore potomka, na ktorom zavolá konštruktor predka. Ďalšiu výhodu to má takú, že si môže vybrať aj ktorý presne konštruktor sa volá.

V PHP to funguje tak, že predvolene sa konštruktor predka jednoducho nezavolá. Kým v konštruktore potomka nezavoláte parent::__construct();, nič sa neudeje. Toto pokladám za zlyhanie PHP, pokiaľ ide o implementáciu objektovo orientovaného programovania.

Viac informacií preberáme na kurze:

Kurz PHPMYSQLAJAX - Programovanie v PHP s MySQL natvrdo a bez frameworku!

Marián Knězek

Súvisiace články: