Operator instanceof in dedovanje v OOP v PHP

Oglejmo si posebnosti dedovanja pri uporabi operatorja instanceof. Recimo, da imamo nadrejeni razred in podrejeni razred:

index.php<?php
  // Nadrejeni razred:
  class ParentClass
  {
    
  }
  
  // Podrejeni razred:
  class ChildClass extends ParentClass
  {
    
  }
?>

Ustvarimo objekt podrejenega razreda:

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

Preverimo zdaj s pomočjo instanceof, ali naš objekt pripada razredu ParentClass in razredu ChildClass:

index.php<?php
  var_dump($obj instanceof ChildClass);  // izpiše true
  var_dump($obj instanceof ParentClass); // prav tako izpiše true
?>

Kot vidite iz primera - operator instanceof ne dela razlik pri preverjanju med nadrejenimi in podrejenimi razredi.

Ne zmedite se - če je objekt resnično iz nadrejenega razreda, potem bo preverjanje pripadnosti podrejenemu razredu vrnilo false:

php<?php
  $obj = new ParentClass; // objekt nadrejenega razreda
  
  var_dump($obj instanceof ParentClass); // izpiše true
  var_dump($obj instanceof ChildClass);  // izpiše false
?>
Задание 1

Naredite razred User z javnimi lastnostmi name in surname.

Задание 2

Naredite razred Employee, ki bo podedoval od razreda User in dodal lastnost salary.

Задание 3

Naredite razred City z javnimi lastnostmi name in population.

Задание 4

Ustvarite 3 objekte razreda User, 3 objekte razreda Employee, 3 objekte razreda City, in jih v poljubnem vrstnem redu zapišite v tabelo $arr.

Задание 5

Preglejte z zanko tabelo $arr in izpišite na zaslon stolpec lastnosti name tistih objektov, ki pripadajo razredu User ali potomcu tega razreda.

Задание 6

Preglejte z zanko tabelo $arr in izpišite na zaslon stolpec lastnosti name tistih objektov, ki ne pripadajo razredu User ali potomcu tega razreda.

Задание 7

Preglejte z zanko tabelo $arr in izpišite na zaslon stolpec lastnosti name tistih objektov, ki pripadajo natančno razredu User, to pomeni ne razredu City in ne razredu Employee.