Die instanceof operateur en oorerwing in OOP in PHP

Kom ons kyk na die kenmerke van oorerwing wanneer die instanceof operateur gebruik word. Laat ons sê ons het 'n ouerklas en 'n kindklas:

index.php<?php
  // Ouergroep klas:
  class ParentClass
  {
    
  }
  
  // Kindklas:
  class ChildClass extends ParentClass
  {
    
  }
?>

Kom ons skep 'n voorwerp van die kindklas:

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

Kom ons toets nou met behulp van instanceof, of ons voorwerp behoort aan die ParentClass klas en die ChildClass klas:

index.php<?php
  var_dump($obj instanceof ChildClass);  // sal true toon
  var_dump($obj instanceof ParentClass); // sal ook true toon
?>

Soos jy uit die voorbeeld kan sien - die instanceof operateur maak nie 'n onderskeid tussen ouer- en kindklasse tydens toetsing nie.

Moenie verwar raak nie - as die voorwerp werklik van die ouerklas is, sal die toets vir behoort aan die kindklas natuurlik false teruggee:

php<?php
  $obj = new ParentClass; // voorwerp van die ouerklas
  
  var_dump($obj instanceof ParentClass); // sal true toon
  var_dump($obj instanceof ChildClass);  // sal false toon
?>
Задание 1

Maak 'n klas User met openbare eienskappe name en surname.

Задание 2

Maak 'n klas Employee wat sal erf van die klas User en 'n eienskap salary byvoeg.

Задание 3

Maak 'n klas City met openbare eienskappe name en population.

Задание 4

Skep 3 voorwerpe van die User klas, 3 voorwerpe van die Employee klas, 3 voorwerpe van die City klas, en skryf hulle in 'n willekeurige volgorde in die array $arr.

Задание 5

Itereer deur die $arr array met 'n lus en vertoon 'n kolom van die name eienskappe op die skerm van die voorwerpe wat aan die User klas of 'n afstammeling van hierdie klas behoort.

Задание 6

Itereer deur die $arr array met 'n lus en vertoon 'n kolom van die name eienskappe op die skerm van die voorwerpe wat nie aan die User klas of 'n afstammeling van hierdie klas behoort nie.

Задание 7

Itereer deur die $arr array met 'n lus en vertoon 'n kolom van die name eienskappe op die skerm van die voorwerpe wat presies aan die User klas behoort, dit wil sê nie aan die City klas of die Employee klas nie.