⊗ppOpIhOI 36 of 107 menu

Operátor instanceof a dědičnost v OOP v PHP

Pojďme si rozebrat zvláštnosti dědičnosti při použití operátoru instanceof. Předpokládejme, že máme rodičovskou třídu a potomka:

<?php // Rodičovská třída: class ParentClass { } // Třída potomka: class ChildClass extends ParentClass { } ?>

Vytvořme objekt třídy potomka:

<?php $obj = new ChildClass; ?>

Nyní zkontrolujme pomocí instanceof, zda náš objekt patří třídě ParentClass a třídě ChildClass:

<?php var_dump($obj instanceof ChildClass); // vypíše true var_dump($obj instanceof ParentClass); // také vypíše true ?>

Jak vidíte z příkladu - operátor instanceof nerozlišuje při kontrole mezi rodičovskými a potomkovskými třídami.

Nenechte se zmást - pokud bude objekt skutečně z rodičovské třídy, pak samozřejmě kontrola příslušnosti k potomkovské třídě vrátí false:

<?php $obj = new ParentClass; // objekt rodičovské třídy var_dump($obj instanceof ParentClass); // vypíše true var_dump($obj instanceof ChildClass); // vypíše false ?>

Vytvořte třídu User s veřejnými vlastnostmi name a surname.

Vytvořte třídu Employee, která bude dědit od třídy User a přidá vlastnost salary.

Vytvořte třídu City s veřejnými vlastnostmi name a population.

Vytvořte 3 objekty třídy User, 3 objekty třídy Employee, 3 objekty třídy City a v libovolném pořadí je zapište do pole $arr.

Projděte cyklem pole $arr a vypište na obrazovku sloupec vlastností name těch objektů, které patří třídě User nebo potomkovi této třídy.

Projděte cyklem pole $arr a vypište na obrazovku sloupec vlastností name těch objektů, které nepatří třídě User nebo potomkovi této třídy.

Projděte cyklem pole $arr a vypište na obrazovku sloupec vlastností name těch objektů, které patří právě třídě User, tedy ne třídě City a ne třídě Employee.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout