Object-Oriented Programming တွင်အထူးသဖြင့်မဆိုအမွေအနှစ်အဆင့်တွင်အလွန်နက်ရှိုင်းစွာဖြစ်လာနိုင်သည့်အတန်းများအကြားအမွေဆက်ခံမှုနှင့်အမွေဆက်ဆက်ဆံရေးကိုနားလည်ရန်နှင့်ကျွမ်းကျင်ရန်အလွန်အရေးကြီးသည်။ PHP သည် အတန်းများနှင့်အရာဝတ်ထုများအကြားအမွေဆက်ခံသည့်ဆက်နွယ်မှု များကို အကောင်အထည်ဖော်ရန်အသုံး 0 င်သောလုပ်ဆောင်မှုများကိုပေးသည်။ သို့သော်ဤလုပ်ဆောင်မှုနှစ်ခု၏အသုံးပြုမှုဖြစ်ရပ်များသည်အနည်းငယ်ကွဲပြားသည်။ ၎င်းတို့ကိုအတူတကွအသုံးပြုခြင်းသည်အချို့သောအမွေတစ်ခု၏အစိတ်အပိုင်းတစ်ခု၏အစိတ်အပိုင်းတစ်ခုဖြစ်ခြင်းရှိမရှိကိုပိုမိုတိကျစွာဆုံးဖြတ်နိုင်သည်။
is_a () သည်အရာဝတ်ထုတစ်ခုသည်အတန်းတစ်ခု၏ဥပမာတစ်ခုဖြစ်မဟုတ်သည်ဖြစ်စေ, သို့မဟုတ်၎င်းအတန်းမှတိုက်ရိုက်ဖြစ်စေ, ၎င်းသည်ပထမ ဦး ဆုံး parameter အနေဖြင့်အတန်းအစားအမည်ရှိကြိုးများဖြင့်ဖြတ်သန်းခြင်းကိုထောက်ခံသည်။
<?php
class A {}
class B extends A {}
class C extends B {}
$obj = new C();
var_dump(is_a($obj, 'A')); // true
?>
is_a () သည် အရာဝတ်ထု၏ "အမှန်တကယ်မည်သူမည်ဝါဖြစ်ကြောင်း" ရှာဖွေတွေ့ရှိသည်။
is_subclass_of () သည် အတန်းတစ်ခုသို့မဟုတ်အရာဝတ်ထုသည်အတန်း၏ subclass ဟုတ်မဟုတ်ဆုံးဖြတ်သည်ဖြစ်စေဆုံးဖြတ်သည်။ သို့သော်အတန်းကိုယ်နှိုက်သည်၎င်း၏ကိုယ်ပိုင် subclass ဖြစ်သည်ဟုမယူမှတ်ပါ။
<?php
class A {}
class B extends A {}
class C extends B {}
$obj = new C();
var_dump(is_subclass_of($obj, 'A')); // true
var_dump(is_subclass_of('C', 'A')); // true
var_dump(is_subclass_of('A', 'A')); // false
?>
is_subclass_of () သည် အရာဝတ်ထု၏အမှန်တကယ်အမျိုးအစားများအပေါ်ထက်အမွေဆက်ခံအဆောက်အအုံများကိုပိုမိုအာရုံစိုက်သည်။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်အတန်းအစားကိုယ်နှိုက်အပါအ 0 င်မဟုတ်ဘဲ အချို့သောအမွေဥစ်စာ၏ subclass ၏ subclass ၏ subclass ကိုတင်းကြပ်စွာပိုင်ဆိုင်သည်ကို မကြာခဏဆုံးဖြတ်ရန်လိုအပ်သည်။ ဤအချိန်တွင်သင်သည်အခြေစိုက်စခန်းနှင့်အမွေဥစ်စာအခြေအနေများအသီးသီးစီရန်ပေါင်းစပ်ထားသောလုပ်ဆောင်ချက်နှစ်ခုကိုအသုံးပြုနိုင်သည်။
ကျွန်ုပ်တို့သည် 0 င်ရောက်လာသောအတန်းအစားသည်အလွဲသုံးစားမှုကိုရှောင်ရှားရန် 0 င်လာသည့်အတန်းအစား မူဝါဒ (မူဝါဒကိုယ်တိုင်မဟုတ်ဘဲ) ၏ subclass (မူဝါဒကိုယ်တိုင်) ၏ subclass ( မူဝါဒ ကိုယ်တိုင်) ၏ subclass ၏ subclass ကိုသေချာစေရန်လိုအပ်သည့်မူဝါဒ loader တစ်ခုကိုဒီဇိုင်းဆွဲသည်ဆိုပါစို့။
<?php
abstract class Policy {
abstract public function apply();
}
class AdminPolicy extends Policy {
public function apply() {
echo "Admin policy applied.";
}
}
class GuestPolicy extends Policy {
public function apply() {
echo "Guest policy applied.";
}
}
function loadPolicy($policyClassName) {
if (!class_exists($policyClassName)) {
throw new InvalidArgumentException("အတန်းမတည်ရှိပါဘူး");
}
if (!is_subclass_of($policyClassName, 'Policy')) {
throw new InvalidArgumentException("ဖြစ်ရမည် Policy ၏ subclasses");
}
$policy = new $policyClassName();
$policy->apply();
}
loadPolicy('AdminPolicy');
?>
ဤဥပမာတွင်ကျွန်ုပ်တို့သည် 0 င် ရောက်လာသည့်အတန်းအစားသည် မူဝါဒ ကိုယ်တိုင်မဟုတ်ဘဲ မူဝါဒ ၏ subclass ၏ subclass ၏ subclass ၏ subclass ဖြစ်သည်။ IS_SUBCLASS_OF () ကို သုံးရန် ပို. သင့်လျော်သည်။
အကယ်. အရာဝတ်ထုတစ်ခုသည်အခြေခံအတန်းကိုယ်နှိုက်အပါအ 0 င်အချို့သောအမွေစနစ်တစ်ခု၏အဖွဲ့ဝင်တစ် ဦး မှပိုင်ဆိုင်မှုရှိမရှိကိုရှာဖွေရန်လိုအပ်ပါက is_a () သည်ပိုမိုသင့်လျော်သည်။
<?php
function isPolicy($obj) {
return is_a($obj, 'Policy');
}
System အဖွဲ့ဝင်များကိုအမွေဆက်ခံရန် (အခြေခံအတန်းများအပါအ 0 င် )
၎င်းသည် subclass (Base Class ကိုဖယ်ထုတ်ခြင်း) ကိုဆုံးဖြတ်ပါ ။ is_subclass_of () ကို သုံးပါ။
Class Name နှင့် Object Compatibility အပြောင်းအလဲနဲ့ဆွေးနွေးခြင်း - လုပ်ဆောင်ချက်များကိုနှစ် ဦး စလုံးသည် class name and object ကိုအထောက်အပံ့ပေးရန်,
သင်သည်အတန်းအစားအမည်စာရင်းကိုထုတ်ဖော်ပြောဆိုရန်သေးငယ်သော debugging script ကိုရေးနိုင်သည်။ M66.net မှပေးသော PHP online execution enviremention environment တွင်ဖွံ့ဖြိုးတိုးတက်မှုစွမ်းရည်ကိုတိုးတက်စေရန်ဤသို့သောအမွေဓလေ့ထုံးတမ်းဆိုင်ရာတရားစီရင်မှုဆိုင်ရာယုတ္တိဗေဒကိုလျင်မြန်စွာစမ်းသပ်နိုင်သည်။
PHP တွင်အမွေဆက်ခံမှုဆိုင်ရာတရားစီရင်ခြင်းနှင့်ဆက်ဆံမှုကိုကိုင်တွယ်သောအခါ is_a () နှင့် is_subclass_of () သည်အခြေခံနှစ်ခုဖြစ်သည်။ သို့သော်အလွန်အရေးကြီးသောကိရိယာများဖြစ်သည်။ ၎င်းတို့၏ကွဲပြားခြားနားမှုများကိုနားလည်ခြင်းနှင့်၎င်းတို့အားကျိုးကြောင်းဆီလျော်စွာအသုံးပြုခြင်းအားဖြင့်၎င်းသည်ပိုမိုအားကောင်းသည့်အရာဝတ်ထုဆက်နွယ်မှုဆိုင်ရာတရားစီရင်ရေးဆိုင်ရာတရားစီရင်ရေးဆိုင်ရာတရားစီရင်ရေးဆိုင်ရာတရားစီရင်ရေးဆိုင်ရာတရားစီရင်ရေးဆိုင်ရာတရားစီရင်ခြင်းဆိုင်ရာယုတ္တိဗေဒကိုတည်ဆောက်ရန်ကူညီနိုင်သည်။ အထူးသဖြင့် plug-in ယန္တရားများ,