PHP တွင် is_a () function သည်အရာဝတ်ထုတစ်ခုသည်အချို့သောလူတန်းစားသို့မဟုတ်ယင်း၏ subclass ကိုပိုင်သည်ကိုဆုံးဖြတ်ရန်အသုံးပြုသည်။ သို့သော်အတန်းအစားသည် namespace ကိုအသုံးပြုသောအခါ developer များက is_a () ဆုံးဖြတ်ချက်သည်ပျက်ကွက်ကြောင်းတွေ့ရှိရကြသည်။ ဤဆောင်းပါးသည်ဤဖြစ်စဉ်အတွက်ဤ ဖြစ်စဉ် အတွက်အကြောင်းပြချက်များနှင့်မည်ကဲ့သို့အသုံးပြုရမည်ကိုအသေးစိတ်လေ့လာသုံးသပ်လိမ့်မည်။
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
Namespace များ၏နိဒါန်းသည်အတန်း၏ "အပြည့်အဝအရည်အချင်းပြည့်ဝသောအမည်" (FQN) ဟူသောအယူအဆကိုပြောင်းလဲစေခဲ့သည်။ ဥပမာအားဖြင့်:
namespace MyApp\Models;
class User {}
ဤအချိန်တွင် အသုံးပြုသူ အတန်းအစားအပြည့်အဝအတန်းအစားအမည်မှာ MyApp \ မော်ဒယ်များ \ အသုံးပြုသူ မဟုတ်ဘဲရိုးရှင်းသော အသုံးပြုသူ မဟုတ်ပါ။ IS_A ကိုတိုက်ရိုက်သုံးသောအခါ ($ Obj, 'about') ကို အသုံးပြုသောအခါ, ကျွန်ုပ်တို့သည်တရားစီရင်ခြင်းကိုကျရှုံးစေမည့်ကမ္ဘာလုံးဆိုင်ရာ namespace အောက်ရှိ အသုံးပြုသူ လူတန်းစားနှင့်သက်ဆိုင် သည် ကိုအမှန်တကယ်ဆုံးဖြတ်သည်။
အောက်ပါကုဒ်များရှိသည်ဆိုပါစို့:
namespace MyApp\Models;
class User {}
$user = new User();
var_dump(is_a($user, 'User')); // false,အကဲဖြတ်ရန်ပျက်ကွက်
ပျက်ကွက်မှုမှာ $ အသုံးပြုသူ အရာဝတ်ထုသည် MyApp \ မော်ဒယ်များ \ အသုံးပြုသူ နှင့် 'User' သည်ကမ္ဘာလုံးဆိုင်ရာ namespace ၏ အသုံးပြုသူ ဖြစ်သည်။
ရေးသားရန်မှန်ကန်သောနည်းလမ်းမှာအတန်းအစားအမည်အပြည့်အစုံကိုဖြတ်သန်းရန်ဖြစ်သည်။
var_dump(is_a($user, 'MyApp\Models\User')); // true
တနည်းအားဖြင့် :: Class Carnowants ကိုအသုံးပြုရန်ပိုမိုလုံခြုံသည်။
var_dump(is_a($user, \MyApp\Models\User::class)); // true
အကယ်. အတန်းအစားအမည်ကို dynamically တွင်ဖြတ်သန်းသွားပါက၎င်းသည်အတန်းအပြည့်အ 0 အမည်ရှိသောအမည်အပြည့်အစုံဖြစ်ကြောင်းသေချာပါစေ။
$class = 'User';
var_dump(is_a($user, __NAMESPACE__ . '\\' . $class)); // true
is_a () တတိယ parameter $ ခွင့်ပြုမှုသည် ပထမ ဦး ဆုံး parameter သည်အရာဝတ်ထုတစ်ခုဖြစ်ရန်မလိုအပ်ဘဲဝင်လာသောအတန်းအစားအမည်ကိုတရားစီရင်ရန်ခွင့်ပြုသည်။
var_dump(is_a('MyApp\Models\User', 'MyApp\Models\User', true)); // true
ယခုအချိန်တွင်အတန်းအစားအမည်ကိုလည်းအပြည့်အဝသေချာစေရန်အာမခံထားရမည်။
Namespace သည်အတန်း၏အတန်းအစားအတန်းအစားအပြည့်အ 0 ပြောင်းလဲသွားသည် ။
အမည်များမရှိဘဲအတန်းအမည်များကိုဖြတ်သန်းခြင်းသည်များသောအားဖြင့်တရားစီရင်ခြင်းကိုပျက်ကွက်စေသည်။
:: Class Carrinants သို့မဟုတ်အပြည့်အဝကြိုးများအပြည့်အဝ strings သည်အများဆုံးအကြံပြုသည့်နည်းလမ်းဖြစ်သည်။
တက်ကြွသောအတန်းအစားအမည်များကိုစီရင်သောအခါ namespace ကိုဖြည့်စွက်ရန်အာရုံစိုက်ပါ။
၎င်းကိုကျွမ်းကျင်သည် PHP ရှိ Namespace မှဖြစ်ပေါ်သောတရားစီရင်ခြင်းထောင်ချောက်ကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီး Code ၏အားသာချက်များနှင့်ထိန်းသိမ်းခြင်းကိုတိုးတက်စေသည်။