Operātors instanceof un mantojums OOP PHP

Izpētīsim mantojuma īpatnības, lietojot operātoru instanceof. Pieņemsim, ka mums ir vecāku klase un bērnu klase:

index.php<?php
  // Vecāku klase:
  class ParentClass
  {
    
  }
  
  // Bērnu klase:
  class ChildClass extends ParentClass
  {
    
  }
?>

Izveidosim bērnu klases objektu:

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

Pārbaudīsim tagad ar instanceof palīdzību, vai mūsu objekts pieder klasei ParentClass un klasei ChildClass:

index.php<?php
  var_dump($obj instanceof ChildClass);  // izvadīs true
  var_dump($obj instanceof ParentClass); // arī izvadīs true
?>

Kā redzat no piemēra - operātors instanceof neveido atšķirību pārbaudē starp vecāku un bērnu klasēm.

Nejaucieties - ja objekts patiešām būs vecāku klases, tad, protams, pārbaude uz piederību bērnu klasei atgriezīs false:

php<?php
  $obj = new ParentClass; // vecāku klases objekts
  
  var_dump($obj instanceof ParentClass); // izvadīs true
  var_dump($obj instanceof ChildClass);  // izvadīs false
?>
Задание 1

Izveidojiet klasi User ar publiskām īpašībām name un surname.

Задание 2

Izveidojiet klasi Employee, kas mantos no klases User un pievienos īpašību salary.

Задание 3

Izveidojiet klasi City ar publiskām īpašībām name un population.

Задание 4

Izveidojiet 3 klases User objektus, 3 klases Employee objektus, 3 klases City objektus, un nejaušā secībā ierakstiet tos masīvā $arr.

Задание 5

Izejiet ciklu cauri masīvam $arr un izvadiet uz ekrānu īpašību name kolonnu tiem objektiem, kas pieder klasei User vai šīs klases pēctečiem.

Задание 6

Izejiet ciklu cauri masīvam $arr un izvadiet uz ekrānu īpašību name kolonnu tiem objektiem, kas nepieder klasei User vai šīs klases pēctečiem.

Задание 7

Izejiet ciklu cauri masīvam $arr un izvadiet uz ekrānu īpašību name kolonnu tiem objektiem, kas pieder tieši klasei User, tas ir, ne klasei City un ne klasei Employee.