Der instanceof-Operator und Vererbung in OOP in PHP

Lassen Sie uns die Besonderheiten der Vererbung bei der Verwendung des Operators instanceof untersuchen. Nehmen wir an, wir haben eine Elternklasse und eine Kindklasse:

index.php<?php
  // Elternklasse:
  class ParentClass
  {
    
  }
  
  // Kindklasse:
  class ChildClass extends ParentClass
  {
    
  }
?>

Erstellen wir ein Objekt der Kindklasse:

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

Prüfen wir nun mit Hilfe von instanceof, ob unser Objekt zur Klasse ParentClass und zur Klasse ChildClass gehört:

index.php<?php
  var_dump($obj instanceof ChildClass);  // gibt true aus
  var_dump($obj instanceof ParentClass); // gibt auch true aus
?>

Wie Sie an dem Beispiel sehen - macht der Operator instanceof beim Prüfen keinen Unterschied zwischen Eltern- und Kindklassen.

Verwechseln Sie es nicht - wenn das Objekt tatsächlich von der Elternklasse ist, dann wird die Prüfung auf Zugehörigkeit zur Kindklasse natürlich false zurückgeben:

php<?php
  $obj = new ParentClass; // Objekt der Elternklasse
  
  var_dump($obj instanceof ParentClass); // gibt true aus
  var_dump($obj instanceof ChildClass);  // gibt false aus
?>
Задание 1

Erstellen Sie eine Klasse User mit öffentlichen Eigenschaften name und surname.

Задание 2

Erstellen Sie eine Klasse Employee, die von der Klasse User erbt und eine Eigenschaft salary hinzufügt.

Задание 3

Erstellen Sie eine Klasse City mit öffentlichen Eigenschaften name und population.

Задание 4

Erstellen Sie 3 Objekte der Klasse User, 3 Objekte der Klasse Employee, 3 Objekte der Klasse City und schreiben Sie diese in beliebiger Reihenfolge in ein Array $arr.

Задание 5

Durchlaufen Sie das Array $arr mit einer Schleife und geben Sie auf dem Bildschirm die Spalte der Eigenschaften name derjenigen Objekte aus, die zur Klasse User oder einem Nachkommen dieser Klasse gehören.

Задание 6

Durchlaufen Sie das Array $arr mit einer Schleife und geben Sie auf dem Bildschirm die Spalte der Eigenschaften name derjenigen Objekte aus, die nicht zur Klasse User oder einem Nachkommen dieser Klasse gehören.

Задание 7

Durchlaufen Sie das Array $arr mit einer Schleife und geben Sie auf dem Bildschirm die Spalte der Eigenschaften name derjenigen Objekte aus, die genau zur Klasse User gehören, also nicht zur Klasse City und nicht zur Klasse Employee.