Operador instanceof y herencia en POO en PHP

Analicemos las características de la herencia al usar el operador instanceof. Supongamos que tenemos una clase padre y una clase hija:

index.php<?php
  // Clase padre:
  class ParentClass
  {
    
  }
  
  // Clase hija:
  class ChildClass extends ParentClass
  {
    
  }
?>

Creemos un objeto de la clase hija:

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

Ahora verifiquemos usando instanceof, si nuestro objeto pertenece a la clase ParentClass y a la clase ChildClass:

index.php<?php
  var_dump($obj instanceof ChildClass);  // devolverá true
  var_dump($obj instanceof ParentClass); // también devolverá true
?>

Como puede ver en el ejemplo, el operador instanceof no hace distinción al verificar entre clases padre y clases hija.

No se confunda: si el objeto es realmente de la clase padre, entonces, por supuesto, la verificación de pertenencia a la clase hija devolverá false:

php<?php
  $obj = new ParentClass; // objeto de la clase padre
  
  var_dump($obj instanceof ParentClass); // devolverá true
  var_dump($obj instanceof ChildClass);  // devolverá false
?>
Задание 1

Cree una clase User con propiedades públicas name y surname.

Задание 2

Cree una clase Employee que herede de la clase User y agregue la propiedad salary.

Задание 3

Cree una clase City con propiedades públicas name y population.

Задание 4

Cree 3 objetos de la clase User, 3 objetos de la clase Employee, 3 objetos de la clase City, y en un orden arbitrario, guárdelos en un array $arr.

Задание 5

Recorra en ciclo el array $arr y muestre en pantalla la columna de propiedades name de aquellos objetos que pertenezcan a la clase User o a una clase descendiente de esta.

Задание 6

Recorra en ciclo el array $arr y muestre en pantalla la columna de propiedades name de aquellos objetos que no pertenezcan a la clase User o a una clase descendiente de esta.

Задание 7

Recorra en ciclo el array $arr y muestre en pantalla la columna de propiedades name de aquellos objetos que pertenezcan específicamente a la clase User, es decir, que no sean de la clase City ni de la clase Employee.