Operatoriaus instanceof naudojimas ir OOP paveldėjimas PHP

Išnagrinėkime paveldėjimo ypatumus naudojant operatorių instanceof. Tarkime, kad turime tėvinę klasę ir dukterinę klasę:

index.php<?php
  // Tėvinė klasė:
  class ParentClass
  {
    
  }
  
  // Dukterinė klasė:
  class ChildClass extends ParentClass
  {
    
  }
?>

Sukurkime dukterinės klasės objektą:

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

Dabar patikrinkime naudodami instanceof, ar mūsų objektas priklauso klasei ParentClass ir klasei ChildClass:

index.php<?php
  var_dump($obj instanceof ChildClass);  // išves true
  var_dump($obj instanceof ParentClass); // taip pat išves true
?>

Kaip matote iš pavyzdžio - operatorius instanceof neatskiria tikrinant tėvines ir dukterines klases.

Nesupainokite - jei objektas tikrai bus tėvinės klasės, tai, žinoma, patikrinimas ar jis priklauso dukterinei klasei grąžins false:

php<?php
  $obj = new ParentClass; // tėvinės klasės objektas
  
  var_dump($obj instanceof ParentClass); // išves true
  var_dump($obj instanceof ChildClass);  // išves false
?>
Задание 1

Sukurkite klasę User su viešomis savybėmis name ir surname.

Задание 2

Sukurkite klasę Employee, kuri paveldės iš klasės User ir pridės savybę salary.

Задание 3

Sukurkite klasę City su viešomis savybėmis name ir population.

Задание 4

Sukurkite 3 klasės User objektus, 3 klasės Employee objektus, 3 klasės City objektus ir bet kokia tvarka įrašykite juos į masyvą $arr.

Задание 5

Prabėkite ciklu per masyvą $arr ir išveskite į ekraną savybės name stulpelį tų objektų, kurie priklauso klasei User arba šios klasės palikuonims.

Задание 6

Prabėkite ciklu per masyvą $arr ir išveskite į ekraną savybės name stulpelį tų objektų, kurie nepriklauso klasei User arba šios klasės palikuonims.

Задание 7

Prabėkite ciklu per masyvą $arr ir išveskite į ekraną savybės name stulpelį tų objektų, kurie priklauso būtent klasei User, tai yra ne klasei City ir ne klasei Employee.