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

IS_A () နှင့် Instanceof အကြားခြားနားချက်နှင့်ရွေးချယ်မှု

M66 2025-06-01

1 ။ Syntax နှင့်အသုံးပြုမှု

1 ။ is_a () function ကို

 is_a(object|string $object_or_class, string $class, bool $allow_string = false): bool
  • $ object_or_Class : အရာဝတ်ထုတစ်ခုသို့မဟုတ်အတန်းအစားအမည်တစ်ခုဖြစ်နိုင်ပါတယ်။

  • $ အတန်း - Target Class Name ကိုဆုံးဖြတ်ရန်။

  • $ Allow_String - အကယ်. လွန်သွားသောအခါအရာဝတ်ထုတစ်ခုအစားအတန်းအစားအမည်တစ်ခုဖြစ်ပါကဤ parameter သည် မှန်ကန် ရန်သတ်မှတ်ထားရမည်။

ဥပမာ -

 class Animal {}
class Dog extends Animal {}

$dog = new Dog();

var_dump(is_a($dog, 'Animal')); // true

ကြိုးကိုလည်းဖြတ်ကြလော့။

 var_dump(is_a('Dog', 'Animal', true)); // true

2 ။ Insteof အော်ပရေတာ

 $object instanceof ClassName

ဥပမာ -

 $dog = new Dog();
var_dump($dog instanceof Animal); // true

မှတ်စု: Instranceof ကို အရာဝတ်ထုများအတွက်သာအသုံးပြုနိုင်ပြီးအတန်းအမည်ရှိကြိုးများအတွက်တိုက်ရိုက်မသုံးနိုင်ပါ။


2 ။ ပြန်လာရလဒ်နှိုင်းယှဉ်

နှစ် ဦး စလုံးသည်အရာဝတ်ထုတစ်ခု၏ဥပမာတစ်ခု၏ဥပမာတစ်ခုသို့မဟုတ် subclass ရှိမရှိဆုံးဖြတ်ရန် Boolean တန်ဖိုးကိုပြန်ပို့သည်။ ဒါပေမယ့်

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

  • Instanceof သည်ပိုမိုတင်းကျပ်။ ပိုမိုသောအရာဝတ်ထုကို ဦး စားပေးပြီး,


3 ။ စွမ်းဆောင်ရည်ကွဲပြားခြားနားမှု

အခြေအနေအများစုတွင်နှစ်ခုအကြားစွမ်းဆောင်ရည်ကွာဟချက်ကိုလျစ်လျူရှုနိုင်သည်။ သို့သော်ဘာသာစကား၏ရှုထောင့်မှကြည့်လျှင် Instanceof သည်အရာဝတ်ထုအပေါ်တိုက်ရိုက်လုပ်ဆောင်ခြင်းနှင့်အနည်းငယ်ပိုမိုကောင်းမွန်သောစွမ်းဆောင်ရည်ကိုလုပ်ဆောင်သောအော်ပရေတာတစ်ခုဖြစ်သည်။ နှင့် is_a () is_a () သည် calling overhead နှင့်အတူ function ကိုဖြစ်ပါတယ်။

သင်မကြာခဏကွင်းဆက်တွင်အမျိုးအစားစီရင်ချက်များကိုလုပ်ဆောင်ခြင်းမရှိပါက၎င်းကိုသင်အလွန်အမင်းအာရုံစိုက်ရန်မလိုအပ်ပါ။


IV ။ လိုက်ဖက်တဲ့နှင့်အန္တရာယ်

  • IS_A () သည် PHP 5 မတိုင်မီအလားတူပြည်တွင်းရေး function ကိုဖြစ်ပြီး PHP 5 မှစ. လက်ရှိပုံစံကိုတရားဝင်ထောက်ခံခဲ့သည်။

  • Instanceof သည်ဘာသာစကားအော်ပရေတာတစ်ခုဖြစ်ပြီးပံ့ပိုးမှု၌တည်ငြိမ်မှုရှိခဲ့သည်။

သင်၏ကုဒ်သည်အစောပိုင်းဗားရှင်းများနှင့်သဟဇာတဖြစ်စေရန်သို့မဟုတ် function ခေါ်ဆိုမှုများကိုရှောင်ကြဉ်ရန်သို့မဟုတ် function ခေါ်ဆိုမှုများကိုရှောင်ရှားရန်သို့မဟုတ် function ခေါ်ဆိုမှုများကိုရှောင်ရှားရန် (ဥပမာ function များ,


5 ။ ဘေးကင်းလုံခြုံမှုထည့်သွင်းစဉ်းစား

When making judgments using the class name provided by the user, is_a() is easily misused. ဥပမာအားဖြင့်:

 $class = $_GET['class']; // အသုံးပြုသူများသည်မည်သည့်လူတန်းစားအမည်ကိုမဆိုဖြတ်သန်းသွားနိုင်သည်
if (is_a($object, $class)) {
    // ...
}

ဤရွေ့ကား dynamic တရားစီရင်ခြင်းအမျိုးအစားတွင်လုံခြုံစိတ်ချရသောအန္တရာယ်အချို့ရှိသည်။ Instanceof ကို အသုံးပြုခြင်းသည်ပုံအမျိုးအစားများကိုပိုမိုလွယ်ကူစွာတားဆီးနိုင်ပြီးအလားအလာရှိသောဆေးထိုးခြင်းသို့မဟုတ်လွဲမှားခြင်းများကိုရှောင်ရှားနိုင်သည်။


6 ။ လက်တွေ့ကျသောအကြံပြုချက်များ

အောက်ပါအကြောင်းပြချက်များအတွက်ပထမ ဦး ဆုံး instanceof ကို အသုံးပြုရန်အကြံပြုသည် -

  1. အရာဝတ်ထု -oriented programming စတိုင်နှင့်အညီ semantic နှင့်အညီ။

  2. အမှားအယွင်းနည်းသောအန္တရာယ်, ပိုမိုရှင်းလင်းသောအမျိုးအစားယုတ္တိဗေဒ။

  3. အနည်းငယ်အလွန်အစွမ်းထက်တဲ့စွမ်းဆောင်ရည်နှင့်ပိုမိုရိုးရှင်းတဲ့စကားရပ်။

လူအနည်းငယ်သည်အတန်းအမည်များကိုမှန်ကန်စွာပြုလုပ်ရန်လိုအပ်သည့်အခါ (စက်ရုံ mode, plug-in လုပ်ခြင်း) ကိုအသုံးပြုနိုင်သောအခါ is_a () ကို သုံး နိုင်သည်,

ဥပမာအားဖြင့်:

 $class = 'App\\Plugins\\SomeHandler';
if (is_a($handler, $class, true)) {
    $handler->handle();
}

his ည့်သည် Dynamic Plugin စီမံခန့်ခွဲမှုနမူနာကုဒ်:

 https://m66.net/examples/plugin-loader.php