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 ကိုနှင့်အမှုမရှိသောအမှားများကိုမည်သို့ရှောင်ရှားရမည်ကိုအသေးစိတ်ဆွေးနွေးပါမည်။
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 ၏ဖြစ်ရပ်ခြားနားချက်သည်တရားစီရင်ခြင်းကိုပျက်ကွက်စေလိမ့်မည်။
Instranof Keyword သည် Object အမျိုးအစားများကိုစီရင်သောအခါကိစ္စတွင်မခံစားနိုင်သောဖြစ်ရပ်မှန်ဖြစ်သည်။ အသုံးပြုရန်အကြံပြုသည်
if ($obj instanceof MyClass) {
// ကုဒ်ယုတ္တိဗေဒ
}
အကယ် . သင်သည်အတန်းအမည်များကိုမသွားရန်မလိုပါ။
အကယ်. သင်သည် 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)
PHP 5.3.0 သည်ပထမဆုံး parameter ကို class name string တစ်ခုဖြစ်ခွင့်ပြုရန်တတိယ parameter_stracting_string ကိုမိတ်ဆက်ပေးသည် ။ ဒီ parameter သည်၏အသုံးပြုမှုမြင်ကွင်းများကိုအာရုံစိုက်ပါ။
is_a () function ကို၏ဒုတိယ pareter သည်စာလုံးအကြီးအသေးအရေးပါသောအမှားများကိုဖြစ်ပေါ်စေနိုင်သည်။
is_a () အစား instanceof သော့ချက်စာလုံးကိုအသုံးပြုရန်အကြံပြုသည်။
အကယ်. သင်သည် is_a () ကို သုံးရမည်ဆိုပါကအတန်းအစားအမည်မှာစာလုံးအသေးဖြစ်ပါသလား။
PHP ၏အတွင်းပိုင်းကိစ္စတွင်ကိုင်တွယ်ရေးယန္တရားကိုနားလည်ခြင်းသည်အသေးစိတ်အမှားအယွင်းများကိုရှောင်ရှားနိုင်ပြီးကုဒ်အဆင်သင့်များကိုတိုးတက်စေသည်။
PHP မှအရာဝတ်ထုစစ်ဆင်ရေးကျွမ်းကျင်မှုများအကြောင်းပိုမိုသိလိုပါကသင်လည်ပတ်နိုင်သည်။