instanceof օպերատորը և ժառանգությունը OOP-ում 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 դասին: