Оператор instanceof и наследование у ООП у PHP-у

Хајде да разберемо карактеристике наслеђивања када се користи оператор instanceof. Претпоставимо да имамо родитељску класу и класу дете:

index.php<?php
  // Родитељска класа:
  class ParentClass
  {
    
  }
  
  // Класа дете:
  class ChildClass extends ParentClass
  {
    
  }
?>

Хајде да креирамо објекат класе дете:

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

Сада проверимо помоћу instanceof, да ли наш објекат припада класи ParentClass и класи ChildClass:

index.php<?php
  var_dump($obj instanceof ChildClass);  // исписаће true
  var_dump($obj instanceof ParentClass); // такође ће исписати true
?>

Као што видите из примера - оператор instanceof не прави разлику при провери између родитељских и класа детета.

Не збуњујте се - ако је објекат заиста родитељске класе онда ће, наравно, провера припадности класи детета вратити false:

php<?php
  $obj = new ParentClass; // објекат родитељске класе
  
  var_dump($obj instanceof ParentClass); // исписаће true
  var_dump($obj instanceof ChildClass);  // исписаће false
?>
Задание 1

Направите класу User са јавним својствима name и surname.

Задание 2

Направите класу Employee, која ће наслеђивати од класе User и додати својство salary.

Задание 3

Направите класу City са јавним својствима name и population.

Задание 4

Креирајте 3 објекта класе User, 3 објекта класе Employee, 3 објекта класе City, и их у произвољном редоследу запишите у низ $arr.

Задание 5

Пређите петљом кроз низ $arr и прикажите на екрану колону својстава name оних објеката, који припадају класи User или потомку те класе.

Задание 6

Пређите петљом кроз низ $arr и прикажите на екрану колону својстава name оних објеката, који не припадају класи User или потомку те класе.

Задание 7

Пређите петљом кроз низ $arr и прикажите на екрану колону својстава name оних објеката, који припадају тачно класи User, то јест не класи City и не класи Employee.