Az instanceof operátor és az öröklődés az OOP-ban PHP-ben

Nézzük meg az öröklődés sajátosságait az instanceof operátor használatakor. Tegyük fel, hogy van egy szülő osztályunk és egy gyermek osztályunk:

index.php<?php
  // Szülő osztály:
  class ParentClass
  {
    
  }
  
  // Gyermek osztály:
  class ChildClass extends ParentClass
  {
    
  }
?>

Hozzunk létre egy objektumot a gyermek osztályból:

index.php<?php
  $obj = new ChildClass;
?>

Ellenőrizzük most a instanceof segítségével, hogy az objektumunk a ParentClass osztályhoz és a ChildClass osztályhoz tartozik-e:

index.php<?php
  var_dump($obj instanceof ChildClass);  // true-t ad vissza
  var_dump($obj instanceof ParentClass); // szintén true-t ad vissza
?>

Amint a példából látható - az instanceof operátor nem tesz különbséget a szülő és a gyermek osztályok között az ellenőrzés során.

Ne keveredjünk össze - ha az objektum valóban a szülő osztályból származik, akkor természetesen a gyermek osztályhoz való tartozás ellenőrzése false értéket ad vissza:

php<?php
  $obj = new ParentClass; // a szülő osztály objektuma
  
  var_dump($obj instanceof ParentClass); // true-t ad vissza
  var_dump($obj instanceof ChildClass);  // false-t ad vissza
?>
Задание 1

Készítsen egy User osztályt publikus tulajdonságokkal: name és surname.

Задание 2

Készítsen egy Employee osztályt, amely örököl a User osztályból és hozzáad egy salary tulajdonságot.

Задание 3

Készítsen egy City osztályt publikus tulajdonságokkal: name és population.

Задание 4

Hozzon létre 3 objektumot a User osztályból, 3 objektumot a Employee osztályból, 3 objektumot a City osztályból, és tetszőleges sorrendben írja be őket a $arr tömbbe.

Задание 5

Iteráljon végig a $arr tömbön ciklussal és jelenítse meg a képernyőn a name tulajdonságok oszlopát azoknak az objektumoknak, amelyek a User osztályhoz vagy annak leszármazottjához tartoznak.

Задание 6

Iteráljon végig a $arr tömbön ciklussal és jelenítse meg a képernyőn a name tulajdonságok oszlopát azoknak az objektumoknak, amelyek nem tartoznak a User osztályhoz vagy annak leszármazottjához.

Задание 7

Iteráljon végig a $arr tömbön ciklussal és jelenítse meg a képernyőn a name tulajdonságok oszlopát azoknak az objektumoknak, amelyek pontosan a User osztályhoz tartoznak, vagyis nem a City osztályhoz és nem is a Employee osztályhoz.