PHP တွင် is_a () function သည်အရာဝတ်ထုတစ်ခုသည်အတန်းတစ်ခု၏ဥပမာတစ်ခုရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုသည်။ အထူးသဖြင့် parameters များပိုမိုတင်းကြပ်သောတင်းကျပ်သော php ဗားရှင်းများတွင်အထူးသဖြင့်တင်းကျပ်သော mode များသို့မဟုတ် PHP ဗားရှင်းအသစ်များကိုအသုံးပြုပါကအမှားအယွင်းများသို့မဟုတ်သတိပေးချက်များကိုတင်ပြနိုင်သည်။
is_a () function ကို၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
is_a(object|string $object_or_class, string $class, bool $allow_string = false): bool
ဤလုပ်ဆောင်ချက်၏ပထမဆုံး pareter သည်အရာဝတ်ထုတစ်ခုသို့မဟုတ်အတန်းအစားအမည်ရှိ string တစ်ခုဖြစ်နိုင်သည် (တတိယ parameter $ ခွင့်ပြုမှုသည် မှန်ကန် သည်) ။ ဒုတိယ parameter သည်အတန်းအမည်ရှိ string ကိုဖြစ်ရမည်။
developer များအမှားကျူးလွန်သောအမှားများသည် is_a () ကို အသုံးပြုသောအခါ ဒုတိယ parameter ကိုအရာဝတ်ထုတစ်ခုအဖြစ်မှားယွင်းစွာရေးသားရန် သို့မဟုတ်အထူးသဖြင့် dynamically parameters တွေကို parameters တွေကိုဖြတ်သန်းသွားဖို့မေ့လျော့ဖို့မေ့လျော့ဖို့ဖြစ်တယ်။
ဥပမာအားဖြင့်:
$object = new SomeClass();
if (is_a($object, $someClassInstance)) {
// ဒါကအမှားတစ်ခုဖြစ်ပေါ်စေလိမ့်မယ်,ဒုတိယ parameter သည် string ကိုမဟုတ်ပါဘူး
}
ဤစာအရေးအသားနည်းလမ်းသည် PHP 8 တွင် type rolror ကို ဖွင့်လိမ့်မည်။ ဤသို့ပြုလုပ်ရန်မှန်ကန်သောနည်းလမ်းမှာအတန်းအစားအမည်ကိုကြိုးတပ်ထားကြောင်းသေချာစေရန်ဖြစ်သည်။
$object = new SomeClass();
if (is_a($object, get_class($someClassInstance))) {
// မှန်ကန်သော,get_class() အတန်းအမည် string ကိုပြန်သွားပါ
}
လူအများစုက Third-party interface ကိုတရားသူကြီးမှပြန်လာသောအရာဝတ်ထုအမျိုးအစားကိုခေါ်သည့်အခါအောက်ပါကုဒ်ကိုရေးချေနိုင်သည် -
$response = get_data_from_api('https://m66.net/api/example');
if (is_a($response, $expectedClass)) {
// အပြောင်းအလဲနဲ့လုပ်ပါ
}
ဒီမှာပြ The နာက $ life iseave class name string ကိုအစားအရာဝတ်ထုတစ်ခုအစားအရာဝတ်ထုတစ်ခုဖြစ်ပါက၎င်းသည်အမှားတစ်ခုကိုလည်းသတင်းပို့လိမ့်မည်။ သင်တစ် ဦး စစ်ဆေးမှုများပြုလုပ်ရန်သို့မဟုတ်ပထမ ဦး ဆုံးဆွဲထုတ်ရန်လိုအပ်သည်:
if (is_object($expectedClass)) {
$expectedClass = get_class($expectedClass);
}
if (is_a($response, $expectedClass)) {
// လုံခြုံစွာကိုင်တွယ်
}
အရာဝတ်ထုတစ်ခုသည်အချို့သောလူတန်းစားသို့မဟုတ် subclass တစ်ခုနှင့်သက်ဆိုင်သည့်အခြေအနေအများစုတွင် instanceof operator ကိုအသုံးပြုရန်အမှန်တကယ်အကြံပြုသည်။
if ($object instanceof SomeClass) {
// အကြံပြုစာအရေးအသား,ပိုပြီးထိုးထွင်းသိမြင်
}
ဒါပေမယ့်အတန်းအစားနာမည်က dynamic ဖြစ်ရင် (ဥပမာ configuration file ကိုဖတ်ပါ။ ) is_a () ဟာပိုပြီးသင့်တော်တဲ့ရွေးချယ်မှုတစ်ခုဖြစ်ပါတယ်။
$className = 'App\\Models\\User';
if (is_a($object, $className)) {
// အရာဝတ်ထုအမျိုးအစားများ dynamically ဆုံးဖြတ်ရန်
}
IS_A () ကို အသုံးပြုသောအခါဒုတိယ parameter သည်အရာဝတ်ထုတစ်ခုမဟုတ်ပါ။ အကယ်. သင်၏ parametersters သည်အရာဝတ်ထုများဖြစ်နိုင်သည်ဆိုပါက၎င်းတို့ကို Get_Class () မှတဆင့်ပြောင်းလဲပါ။ ထို့အပြင် static တရားစီရင်ပိုင်ခွင့်များအတွက်, Instanceof အသုံးပြုမှုကိုပိုမိုနှစ်သက်သည်, ထို့ကြောင့်ကုဒ်သည်ရှင်းလင်းမှုနှင့်အမှားအယွင်းများနည်းပါးသည်။ ဤအသေးစိတ်အချက်အလက်များကိုကျွမ်းကျင်ရာတွင်ဘုံ PHP ထောင်ချောက်အချို့ကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီး code ၏အားသာချက်များနှင့်ထိန်းသိမ်းမှုကိုတိုးတက်စေသည်။