PHP တွင် is_a function သည်အရာဝတ်ထုတစ်ခုသည်သတ်မှတ်ထားသောအတန်းတစ်ခု၏ဥပမာတစ်ခု, ၎င်း၏အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -
is_a(object $object, string $class_name, bool $allow_string = false): bool
ဤတွင်တတိယ parameter $ ခွင့်ပြုမှု သည် Boolean Value ကို Boolean တန်ဖိုးတစ်ခုဖြစ်သည်။ အကယ်. ချိန်ညှိမှုမမှန်ကန်ပါကတရားစီရင်ခြင်းရလဒ်သည်မတိဖြစ်နိုင်သည်။
$ object : check လုပ်ထားရန်အရာဝတ်ထုသို့မဟုတ်အတန်းအစားအမည်။
$ class_name : အတန်းအမည်ကိုစီရင်ခံရဖို့။
$ Allow_String (ပုံမှန်အားဖြင့် မှားယွင်း သည်) - $ အရာ ဝတ်ထုတစ်ခုအနေဖြင့်အရာဝတ်ထုတစ်ခုမဟုတ်ပါ။
$ Allow_String သည် မှားသော အခါ is_a သည် string ကိုဖြတ်သန်းသွားပါက မှားယွင်းစွာ ပြန်လာလိမ့်မည်။
$ Allow_String မှန် သည်ဆိုပါက ဒေါ်လာအရာဝတ်ထုသည် အတန်းအမည်ရှိ string တစ်ခုဖြစ်နိုင်သည်။ ဤအချိန်တွင် is_a သည် အတန်းသည် ဒေါ်လာ class_name သို့မဟုတ်တူညီသောအတန်းအစား၏ subclass ရှိမရှိဆုံးဖြတ်သည်။
အောက်ပါကုဒ်များရှိသည်ဆိုပါစို့:
class ParentClass {}
class ChildClass extends ParentClass {}
$obj = new ChildClass();
// မမှန်ကန်ပါကတတိယ parameter တိုင်းသတ်မှတ်ထားtrue,ဒါပေမယ့်အရာဝတ်ထုလွန်ဖြစ်ပါတယ်
$result = is_a($obj, 'ParentClass', true);
var_dump($result);
ဤတွင် $ OBJ သည် ကလေးသူငယ် အနေဖြင့် ကလေးသူငယ်ကလွဲ၏ဥပမာတစ်ခုဖြစ်သော်လည်းကလေးသူငယ်က လွဲ ကလွဲမှားသောကလွဲမှားသောတတိယအချက်မှာ Third Parameter သည် မှန်ကန် သည် ။ ရလဒ်သည်မျှော်လင့်ထားသည့် အတိုင်း မဖြစ်နိုင်ပါ။
အကယ်. အရာဝတ်ထုကိုဖြတ်သန်းသွားကြောင်းသင်သေချာလျှင်, တတိယ parameter ကို မှားယွင်းသော သို့မဟုတ်ချန်လှပ်ထားရန်တတိယ parameter ကိုသတ်မှတ်သင့်သည်။
$result = is_a($obj, 'ParentClass');
သို့မဟုတ်:
$result = is_a($obj, 'ParentClass', false);
သင်သည်အတန်းအစားအမည်ဖြင့်ဖြတ်သန်းသွားသောအခါအရာဝတ်ထုတစ်ခုမဟုတ်ပါ ။
$className = 'ChildClass';
$result = is_a($className, 'ParentClass', true);
ဤနည်းအားဖြင့် IS_A သည် ကလေးကလွဲမှုကနေ ကန္တာစုံ ကနေအမွေဆက်ခံခြင်းရှိမရှိဆုံးဖြတ်လိမ့်မည်။
class ParentClass {}
class ChildClass extends ParentClass {}
$obj = new ChildClass();
// မှန်ကန်စွာအသုံးပြုပါ,တတိယ parameter တိုင်းကိုမလွန်ပါနှင့်false
if (is_a($obj, 'ParentClass')) {
echo "အရာဝတ်ထုဖြစ်ပါတယ်ParentClassသို့မဟုတ်၎င်း၏ subclass ၏ဥပမာတစ်ခု。";
}
// အမှားသရုပ်ပြ,တတိယ parameter သည်ဖြစ်ပါတယ်truetime-pass အရာဝတ်ထု
if (is_a($obj, 'ParentClass', true)) {
echo "ဤသည်မှန်ကန်စွာ output ကိုမဟုတ်ပါဘူး,因为တတိယ parameter သည်ဖြစ်ပါတယ်truetime-pass အရာဝတ်ထု会导致判断不准确。";
}
// မှန်ကန်သောသရုပ်ပြ,တတိယ parameter သည်ဖြစ်ပါတယ်trueအချိန် - ဖြတ်သန်းအတန်းအမည် string ကို
$className = 'ChildClass';
if (is_a($className, 'ParentClass', true)) {
echo "ChildClassဟုတ်ကဲ့ParentClass၏ subclasses。";
}
အမှန်တကယ်စီမံကိန်းများအနေဖြင့်အရာဝတ်ထုများကိုတရားစီရင်ရန် Instanceof operator ကိုအသုံးပြုရန်အတွက်ပုံမှန်အားဖြင့်အကြံပြုသည်။
if ($obj instanceof ParentClass) {
echo "အရာဝတ်ထုဖြစ်ပါတယ်ParentClassသို့မဟုတ်၎င်း၏ subclass ၏ဥပမာတစ်ခု。";
}
Instanceof သည် ပိုမိုအလိုလိုသိ။ လုံခြုံသောတတိယ parameter ၏မရေရာဒွိဟမှုမရှိပါ။
IS_A ကိုအသုံးပြုပြီးတဲ့အခါတတိယ parameter $ Allow_String ကို parameter အမျိုးအစားအရကျိုးကြောင်းဆီလျော်ကြောင်းသေချာအောင်လုပ်ပါ။
အကယ်. အရာဝတ်ထုကိုဖြတ်သန်းသွားပါကတတိယ parameter ကိုမသွားရန်သို့မဟုတ် မှားယွင်းစွာ သွားရန်အကြံပြုသည်။
အကယ်. အတန်းအမည်ရှိသည့် string ကိုဖြတ်သန်းပါကတတိယ parameter သည် မှန်ကန် ရန်သတ်မှတ်ထားရမည်။
is is_a is_a ကိုရှောင်ရှားရန်အရာဝတ်ထုအမျိုးအစားကိုအကဲဖြတ်ရန် Code ထဲ၌ code တွင် ရေးထိုး ရန်အကောင်းဆုံးဖြစ်သည်။
အထက်ပါနည်းလမ်းများမှတစ်ဆင့် IS_A ၏လုပ်ဆောင်မှု၏မတိကျသောတရားစီရင်ခြင်းရလဒ်များပြ problem နာကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီးအစီအစဉ်၏မှန်ကန်မှုကိုသေချာစေနိုင်သည်။
// Accessurl
$url = "https://m66.net/example-path";
echo "<a href=\"$url\">点击这里Access</a>";