လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> is_a () နှင့်စာလုံးအသေးစိစစ်ခြင်းပြ issues နာများ

is_a () နှင့်စာလုံးအသေးစိစစ်ခြင်းပြ issues နာများ

M66 2025-05-31

PHP Development တွင် is_a () function သည်အရာတစ်ခုသည်အချို့သောအရာတစ်ခုသို့မဟုတ်ထိုအတန်း၏ subclass ကိုပိုင်ဆိုင်သည်ကိုဆုံးဖြတ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ၎င်း၏အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 is_a(object $object, string $class_name, bool $allow_string = false): bool

သို့သော် is_a () function ကိုအသုံးပြုသောအခါ developer များကပြ a နာကိုမကြာခဏကြုံတွေ့ရတတ်သည်။ ဤဆောင်းပါးသည် is_a () function ကို () function ကို () function ကိုနှင့်အမှုမရှိသောအမှားများကိုမည်သို့ရှောင်ရှားရမည်ကိုအသေးစိတ်ဆွေးနွေးပါမည်။


is_a () function ကို၏ဖြစ်ရပ် sensitivity ကို

PHP တွင် Class အမည်များသည်ပုံမှန်အားဖြင့်စာလုံးအသေးများဖြစ်သည်။ ဥပမာအားဖြင့်, MyClass သို့မဟုတ် MyClass ကိုသင်ရည်ညွှန်းနိုင်သော အတန်း အစားအမည်ကိုဖော်ပြပါ။

 class MyClass {}

$obj = new MyClass();

var_dump($obj instanceof myclass); // ထုတ်လုပ်ခြင်း:bool(true)

သို့သော် is_a () function သည်ဒုတိယ parameter $ class_name ကို ကိုင်တွယ်သောအခါ၎င်းသည် စာလုံးအကြီးအသေးအရေးကြီးသည် ။ လွန်ခဲ့သည့်အတန်းအစားအမည်အရ အကယ်. အမှန်တကယ်အတန်းအစားအမည်နှင့်မကိုက်ညီပါက is_a () သည် မှားယွင်းစွာ တုံ့ပြန်လိမ့်မည်။

ဥပမာ -

 class MyClass {}

$obj = new MyClass();

var_dump(is_a($obj, 'MyClass')); // ထုတ်လုပ်ခြင်း:bool(true)
var_dump(is_a($obj, 'myclass')); // ထုတ်လုပ်ခြင်း:bool(false)

၎င်းသည် Institanof သော့ချက်စာလုံး၏စွမ်းဆောင်ရည်နှင့်ကွဲပြားခြားနားပြီးနားလည်မှုလွဲမှားခြင်းများနှင့်အမှားများကိုကျရောက်နေသည်။


အဘယ်ကြောင့်စာလုံးအကြီးအသေးအရေးကြီးသနည်း

is_a () function ကို၏ဒုတိယ parameter သည် string ကိုဖြစ်ပါတယ်။ PHP သည် strings onsments ကဲ့သို့သောစာလုံးပေါင်းအမည်များကို clash name များနှင့်တိုက်ရိုက်နှိုင်းယှဉ်သည်။ ထို့ကြောင့် string ၏ဖြစ်ရပ်ခြားနားချက်သည်တရားစီရင်ခြင်းကိုပျက်ကွက်စေလိမ့်မည်။


ဖြစ်ရပ်ကွဲပြားခြားနားမှုကြောင့်ဖြစ်ရတဲ့အမှားတွေကိုဘယ်လိုရှောင်ရှားရမလဲ။

1 ။ is_a အစား instanceof ကို သုံးပါ ()

Instranof Keyword သည် Object အမျိုးအစားများကိုစီရင်သောအခါကိစ္စတွင်မခံစားနိုင်သောဖြစ်ရပ်မှန်ဖြစ်သည်။ အသုံးပြုရန်အကြံပြုသည်

 if ($obj instanceof MyClass) {
    // ကုဒ်ယုတ္တိဗေဒ
}

အကယ် . သင်သည်အတန်းအမည်များကိုမသွားရန်မလိုပါ။


2 ။ လူတန်းစားအမည်များ၏စည်းလုံးညီညွတ်ရေးအမှုအပြောင်းအလဲနဲ့

အကယ်. သင်သည် is_a () ကိုအသုံးပြုရပါကအတန်းအစားအမည်မှာ stritically string တစ်ခုဖြစ်သော class name ကိုမှန်ကန်သောအထက်နှင့်စာလုံးအသေးများသို့ပြောင်းလဲနိုင်သည်, ထို့နောက်၎င်းကိုပစ်မှတ်အတန်းအစားအမည်ဖြင့်ပြောင်းလဲနိုင်သည်။

ဥပမာ -

 class MyClass {}

$obj = new MyClass();

$className = 'myclass';

// အစီအစဉ် 1:အမှုမှပြောင်းလဲ(လိုအပ်တဲ့အတန်းအစားနာမည်မြေပုံရှိတယ်)
$correctClassName = 'MyClass';
var_dump(is_a($obj, $correctClassName)); // bool(true)

// အစီအစဉ် 2:တိုက်ရိုက်မသုံးပါis_a,ဒါဟာထုံးစံတရားသဖြင့်စီရင်
function is_a_case_insensitive($obj, $className) {
    return is_subclass_of($obj, $className, true) || 
           (strcasecmp(get_class($obj), $className) === 0);
}

var_dump(is_a_case_insensitive($obj, $className)); // bool(true)

3 ။ PHP 5.3.0 နှင့်နောက်ပိုင်းဗားရှင်းရှိတတိယ parameter သည် is_a

PHP 5.3.0 သည်ပထမဆုံး parameter ကို class name string တစ်ခုဖြစ်ခွင့်ပြုရန်တတိယ parameter_stracting_string ကိုမိတ်ဆက်ပေးသည် ဒီ parameter သည်၏အသုံးပြုမှုမြင်ကွင်းများကိုအာရုံစိုက်ပါ။


အကျဉ်းချုပ်

  • is_a () function ကို၏ဒုတိယ pareter သည်စာလုံးအကြီးအသေးအရေးပါသောအမှားများကိုဖြစ်ပေါ်စေနိုင်သည်။

  • is_a () အစား instanceof သော့ချက်စာလုံးကိုအသုံးပြုရန်အကြံပြုသည်။

  • အကယ်. သင်သည် is_a () ကို သုံးရမည်ဆိုပါကအတန်းအစားအမည်မှာစာလုံးအသေးဖြစ်ပါသလား။

  • PHP ၏အတွင်းပိုင်းကိစ္စတွင်ကိုင်တွယ်ရေးယန္တရားကိုနားလည်ခြင်းသည်အသေးစိတ်အမှားအယွင်းများကိုရှောင်ရှားနိုင်ပြီးကုဒ်အဆင်သင့်များကိုတိုးတက်စေသည်။


PHP မှအရာဝတ်ထုစစ်ဆင်ရေးကျွမ်းကျင်မှုများအကြောင်းပိုမိုသိလိုပါကသင်လည်ပတ်နိုင်သည်။