PHP တွင် instanceof operator နှင့် OOP inheritance

instanceof operator ကိုအသုံးပြုသည့်အခါ inheritance ၏ ထူးခြားချက်များကို ကြည့်ရအောင်။ ကျွန်ုပ်တို့တွင် မိဘ class နှင့် ကလေး class ရှိသည်ဆိုပါစို့။

index.php<?php
  // မိဘ class:
  class ParentClass
  {
    
  }
  
  // ကလေး class:
  class ChildClass extends ParentClass
  {
    
  }
?>

ကလေး class ၏ object တစ်ခုကို ဖန်တီးကြပါစို့။

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

ယခု instanceof ကို အသုံးပြု၍ ကျွန်ုပ်တို့၏ object သည် ParentClass နှင့် ChildClass သို့ သက်ဆိုင်မှုရှိမရှိ စစ်ဆေးကြည့်ပါ။

index.php<?php
  var_dump($obj instanceof ChildClass);  // true ပြမည်
  var_dump($obj instanceof ParentClass); // true ပြမည်
?>

ဥပမာမှတစ်ဆင့် သင်မြင်တွေ့ရသည့်အတိုင်း instanceof operator သည် မိဘ class များနှင့် ကလေး class များကို စစ်ဆေးရာတွင် ခွဲခြားခြင်းမပြုပါ။

မရောထွေးပါနှင့် - အကယ်၍ object သည် မိဘ class ၏ object စစ်စစ်ဖြစ်ပါက ကလေး class သို့သက်ဆိုင်မှုကို စစ်ဆေးသည့်အခါ false ပြန်ပေးမည်မှာ အမှန်ပင်။

php<?php
  $obj = new ParentClass; // မိဘ class ၏ object
  
  var_dump($obj instanceof ParentClass); // true ပြမည်
  var_dump($obj instanceof ChildClass);  // false ပြမည်
?>
Задание 1

User class ကို public property name နှင့် surname များဖြင့် ပြုလုပ်ပါ။

Задание 2

Employee class ကို User class မှ inheritance လုပ်၍ salary property ထပ်ထည့်ပါ။

Задание 3

City class ကို public property name နှင့် population များဖြင့် ပြုလုပ်ပါ။

Задание 4

User class ၏ object ၃ ခု၊ Employee class ၏ object ၃ ခု၊ City class ၏ object ၃ ခုကို ဖန်တီးကာ စိတ်ကြိုက် အစီအစဥ်ဖြင့် $arr array ထဲသို့ ရေးထည့်ပါ။

Задание 5

$arr array ကို loop ဖြင့် ဖြတ်သန်းပြီး User class သို့မဟုတ် ထို class ၏ အမွေဆက်ခံသည့် class များသို့ သက်ဆိုင်သော object များ၏ name property များကို column တစ်ခုအနေဖြင့် screen တွင် ပြသပါ။

Задание 6

$arr array ကို loop ဖြင့် ဖြတ်သန်းပြီး User class သို့မဟုတ် ထို class ၏ အမွေဆက်ခံသည့် class များသို့ မသက်ဆိုင်သော object များ၏ name property များကို column တစ်ခုအနေဖြင့် screen တွင် ပြသပါ။

Задание 7

$arr array ကို loop ဖြင့် ဖြတ်သန်းပြီး User class သို့သာ သက်ဆိုင်သော၊ ဆိုလိုသည်မှာ City class သို့မဟုတ် Employee class သို့ မသက်ဆိုင်သော object များ၏ name property များကို column တစ်ခုအနေဖြင့် screen တွင် ပြသပါ။