လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> is_a ကိုအသုံးပြုပြီး namespace အတန်းပျက်ကွက်မှုအတွက်ဘုံအကြောင်းရင်းများ

is_a ကိုအသုံးပြုပြီး namespace အတန်းပျက်ကွက်မှုအတွက်ဘုံအကြောင်းရင်းများ

M66 2025-06-05

PHP တွင် is_a () function သည်အရာဝတ်ထုတစ်ခုသည်အချို့သောလူတန်းစားသို့မဟုတ်ယင်း၏ subclass ကိုပိုင်သည်ကိုဆုံးဖြတ်ရန်အသုံးပြုသည်။ သို့သော်အတန်းအစားသည် namespace ကိုအသုံးပြုသောအခါ developer များက is_a () ဆုံးဖြတ်ချက်သည်ပျက်ကွက်ကြောင်းတွေ့ရှိရကြသည်။ ဤဆောင်းပါးသည်ဤဖြစ်စဉ်အတွက်ဤ ဖြစ်စဉ် အတွက်အကြောင်းပြချက်များနှင့်မည်ကဲ့သို့အသုံးပြုရမည်ကိုအသေးစိတ်လေ့လာသုံးသပ်လိမ့်မည်။


1 ။ is_a () function ကိုမိတ်ဆက်

IS_A () သည် PHP ၏ built-in function ဖြစ်သည်။ လက်မှတ်ထိုးသည့်အတိုင်းလက်မှတ်ထိုးသည်။

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

ပထမ ဦး ဆုံး parameter သည်ဒုတိယ parameter သည်ဒုတိယ parameter သည်သတ်မှတ်ထားသောအတန်းအစားသို့မဟုတ်ယင်း၏ subclass ၏ဥပမာတစ်ခုဖြစ်သည်။ ဥပမာ -

 class Animal {}
class Dog extends Animal {}

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

2 ။ အတန်းအမည်များအပေါ် namespace ၏သွဇာလွှမ်းမိုးမှု

Namespace များ၏နိဒါန်းသည်အတန်း၏ "အပြည့်အဝအရည်အချင်းပြည့်ဝသောအမည်" (FQN) ဟူသောအယူအဆကိုပြောင်းလဲစေခဲ့သည်။ ဥပမာအားဖြင့်:

 namespace MyApp\Models;

class User {}

ဤအချိန်တွင် အသုံးပြုသူ အတန်းအစားအပြည့်အဝအတန်းအစားအမည်မှာ MyApp \ မော်ဒယ်များ \ အသုံးပြုသူ မဟုတ်ဘဲရိုးရှင်းသော အသုံးပြုသူ မဟုတ်ပါ။ IS_A ကိုတိုက်ရိုက်သုံးသောအခါ ($ Obj, 'about') ကို အသုံးပြုသောအခါ, ကျွန်ုပ်တို့သည်တရားစီရင်ခြင်းကိုကျရှုံးစေမည့်ကမ္ဘာလုံးဆိုင်ရာ namespace အောက်ရှိ အသုံးပြုသူ လူတန်းစားနှင့်သက်ဆိုင် သည် ကိုအမှန်တကယ်ဆုံးဖြတ်သည်။


3 ။ is_a () တရားစီရင်ခြင်းပျက်ကွက်သောပုံမှန်အခြေအနေများ

အောက်ပါကုဒ်များရှိသည်ဆိုပါစို့:

 namespace MyApp\Models;

class User {}

$user = new User();

var_dump(is_a($user, 'User')); // false,အကဲဖြတ်ရန်ပျက်ကွက်

ပျက်ကွက်မှုမှာ $ အသုံးပြုသူ အရာဝတ်ထုသည် MyApp \ မော်ဒယ်များ \ အသုံးပြုသူ နှင့် 'User' သည်ကမ္ဘာလုံးဆိုင်ရာ namespace ၏ အသုံးပြုသူ ဖြစ်သည်။


4 ။ ဖြေရှင်းနည်း

1 ။ အပြည့်အဝ namespace အတန်းအစားအမည်ကိုသုံးပါ

ရေးသားရန်မှန်ကန်သောနည်းလမ်းမှာအတန်းအစားအမည်အပြည့်အစုံကိုဖြတ်သန်းရန်ဖြစ်သည်။

 var_dump(is_a($user, 'MyApp\Models\User')); // true

တနည်းအားဖြင့် :: Class Carnowants ကိုအသုံးပြုရန်ပိုမိုလုံခြုံသည်။

 var_dump(is_a($user, \MyApp\Models\User::class)); // true

2 ။ dynamic အတန်းအစားအမည်များကိုကိုင်တွယ်ပါ

အကယ်. အတန်းအစားအမည်ကို dynamically တွင်ဖြတ်သန်းသွားပါက၎င်းသည်အတန်းအပြည့်အ 0 အမည်ရှိသောအမည်အပြည့်အစုံဖြစ်ကြောင်းသေချာပါစေ။

 $class = 'User';
var_dump(is_a($user, __NAMESPACE__ . '\\' . $class)); // true

5 ။ ဖြည့်စွက်: is_a () နှင့် string class name တရားသဖြင့်စီရင်အကြားခြားနားချက်

is_a () တတိယ parameter $ ခွင့်ပြုမှုသည် ပထမ ဦး ဆုံး parameter သည်အရာဝတ်ထုတစ်ခုဖြစ်ရန်မလိုအပ်ဘဲဝင်လာသောအတန်းအစားအမည်ကိုတရားစီရင်ရန်ခွင့်ပြုသည်။

 var_dump(is_a('MyApp\Models\User', 'MyApp\Models\User', true)); // true

ယခုအချိန်တွင်အတန်းအစားအမည်ကိုလည်းအပြည့်အဝသေချာစေရန်အာမခံထားရမည်။


6 ။ အကျဉ်းချုပ်

  • Namespace သည်အတန်း၏အတန်းအစားအတန်းအစားအပြည့်အ 0 ပြောင်းလဲသွားသည်

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

  • :: Class Carrinants သို့မဟုတ်အပြည့်အဝကြိုးများအပြည့်အဝ strings သည်အများဆုံးအကြံပြုသည့်နည်းလမ်းဖြစ်သည်။

  • တက်ကြွသောအတန်းအစားအမည်များကိုစီရင်သောအခါ namespace ကိုဖြည့်စွက်ရန်အာရုံစိုက်ပါ။

၎င်းကိုကျွမ်းကျင်သည် PHP ရှိ Namespace မှဖြစ်ပေါ်သောတရားစီရင်ခြင်းထောင်ချောက်ကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီး Code ၏အားသာချက်များနှင့်ထိန်းသိမ်းခြင်းကိုတိုးတက်စေသည်။


7 ။ နမူနာကုဒ်အကျဉ်းချုပ်