⊗ppOpIhOI 36 of 107 menu

Operator instanceof i dziedziczenie w OOP w PHP

Przeanalizujmy szczegóły dziedziczenia przy użyciu operatora instanceof. Załóżmy, że mamy klasę rodzicielską i klasę potomną:

<?php // Klasa rodzicielska: class ParentClass { } // Klasa potomna: class ChildClass extends ParentClass { } ?>

Stwórzmy obiekt klasy potomnej:

<?php $obj = new ChildClass; ?>

Sprawdźmy teraz za pomocą instanceof, czy nasz obiekt należy do klasy ParentClass i do klasy ChildClass:

<?php var_dump($obj instanceof ChildClass); // wypisze true var_dump($obj instanceof ParentClass); // też wypisze true ?>

Jak widać na przykładzie - operator instanceof nie rozróżnia przy sprawdzaniu między klasami rodzicielskimi i potomnymi.

Nie pomyl się - jeśli obiekt będzie rzeczywiście klasy rodzicielskiej to, oczywiście, sprawdzenie przynależności do klasy potomnej zwróci false:

<?php $obj = new ParentClass; // obiekt klasy rodzicielskiej var_dump($obj instanceof ParentClass); // wypisze true var_dump($obj instanceof ChildClass); // wypisze false ?>

Stwórz klasę User z publicznymi właściwościami name i surname.

Stwórz klasę Employee, która będzie dziedziczyć z klasy User i dodawać właściwość salary.

Stwórz klasę City z publicznymi właściwościami name i population.

Utwórz 3 obiekty klasy User, 3 obiekty klasy Employee, 3 obiekty klasy City, i w dowolnej kolejności zapisz je w tablicy $arr.

Przejdź pętlą przez tablicę $arr i wypisz na ekran kolumnę właściwości name tych obiektów, które należą do klasy User lub potomka tej klasy.

Przejdź pętlą przez tablicę $arr i wypisz na ekran kolumnę właściwości name tych obiektów, które nie należą do klasy User lub potomka tej klasy.

Przejdź pętlą przez tablicę $arr i wypisz na ekran kolumnę właściwości name tych obiektów, które należą dokładnie do klasy User, to znaczy nie do klasy City i nie do klasy Employee.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć