PHP OOP: Faux-pas volání konstruktoru předka

Pokud pod pojmem 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ť.

Co je konstruktor? Je to metoda, která je volána automaticky při vzniku objektu, tedy když se vytváří instance třídy. Konstruktor napomáhá k tomu, abychom objekt inicializovali na počáteční stav.

Dědění je přebírání vlastností z předka (původní třída) na potomka (specializovaná třída). Dědění vytváří statickou vazbu mezi třídami tak, že třída potomka přebírá vlastnosti předka.

Klasický přístup v jiných jazycích objektově orientovaného programování je ten, že konstruktor předka je automaticky zavolán v konstruktu potomka. Např. v Javě je to vymyšleno tak, že konstruktor předka je volán automaticky, jedině, že by si uživatel zavolal explicitně konstruktor potomka. Má to tu výhodu, že si uživatel může vybrat řádek v konstruktoru potomka, na kterém zavolá konstruktor předka. Další výhodu to má takovou, že si může vybrat i který přesně konstruktor se jmenuje.

V PHP to funguje tak, že ve výchozím nastavení se konstruktor předka prostě nezavolá. Zatímco v konstruktoru potomka nezavoláte parent::__construct();, nic se neděje. Toto pokládám za selhání PHP, pokud jde o implementaci objektově orientovaného programování.

Jak začít programovat?

Úvod do programování pro každého bez předchozích znalostí.

Stáhněte si náš ebook teď výjimečně zdarma!!!

Viac informacií preberáme na kurze:

Marián Knězek

 

Súvisiace články: