PHP တွင် instanceof operator နှင့် OOP inheritance
instanceof operator ကိုအသုံးပြုသည့်အခါ inheritance ၏ ထူးခြားချက်များကို ကြည့်ရအောင်။ ကျွန်ုပ်တို့တွင် မိဘ class နှင့် ကလေး class ရှိသည်ဆိုပါစို့။
<?php
// မိဘ class:
class ParentClass
{
}
// ကလေး class:
class ChildClass extends ParentClass
{
}
?>
ကလေး class ၏ object တစ်ခုကို ဖန်တီးကြပါစို့။
<?php
$obj = new ChildClass;
?>
ယခု instanceof ကို အသုံးပြု၍ ကျွန်ုပ်တို့၏ object သည် ParentClass နှင့် ChildClass သို့ သက်ဆိုင်မှုရှိမရှိ စစ်ဆေးကြည့်ပါ။
<?php
var_dump($obj instanceof ChildClass); // true ပြမည်
var_dump($obj instanceof ParentClass); // true ပြမည်
?>
ဥပမာမှတစ်ဆင့် သင်မြင်တွေ့ရသည့်အတိုင်း instanceof operator သည် မိဘ class များနှင့် ကလေး class များကို စစ်ဆေးရာတွင် ခွဲခြားခြင်းမပြုပါ။
မရောထွေးပါနှင့် - အကယ်၍ object သည် မိဘ class ၏ object စစ်စစ်ဖြစ်ပါက ကလေး class သို့သက်ဆိုင်မှုကို စစ်ဆေးသည့်အခါ false ပြန်ပေးမည်မှာ အမှန်ပင်။
<?php
$obj = new ParentClass; // မိဘ class ၏ object
var_dump($obj instanceof ParentClass); // true ပြမည်
var_dump($obj instanceof ChildClass); // false ပြမည်
?>
User class ကို public property name နှင့် surname များဖြင့် ပြုလုပ်ပါ။
Employee class ကို User class မှ inheritance လုပ်၍ salary property ထပ်ထည့်ပါ။
City class ကို public property name နှင့် population များဖြင့် ပြုလုပ်ပါ။
User class ၏ object ၃ ခု၊ Employee class ၏ object ၃ ခု၊ City class ၏ object ၃ ခုကို ဖန်တီးကာ စိတ်ကြိုက် အစီအစဥ်ဖြင့် $arr array ထဲသို့ ရေးထည့်ပါ။
$arr array ကို loop ဖြင့် ဖြတ်သန်းပြီး User class သို့မဟုတ် ထို class ၏ အမွေဆက်ခံသည့် class များသို့ သက်ဆိုင်သော object များ၏ name property များကို column တစ်ခုအနေဖြင့် screen တွင် ပြသပါ။
$arr array ကို loop ဖြင့် ဖြတ်သန်းပြီး User class သို့မဟုတ် ထို class ၏ အမွေဆက်ခံသည့် class များသို့ မသက်ဆိုင်သော object များ၏ name property များကို column တစ်ခုအနေဖြင့် screen တွင် ပြသပါ။
$arr array ကို loop ဖြင့် ဖြတ်သန်းပြီး User class သို့သာ သက်ဆိုင်သော၊ ဆိုလိုသည်မှာ City class သို့မဟုတ် Employee class သို့ မသက်ဆိုင်သော object များ၏ name property များကို column တစ်ခုအနေဖြင့် screen တွင် ပြသပါ။