Ο Τελεστής 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.