လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> တတိယ parameter တိုင်းသတ်မှတ်ခြင်းသည်မမှန်ကန်ပါ,

တတိယ parameter တိုင်းသတ်မှတ်ခြင်းသည်မမှန်ကန်ပါ,

M66 2025-06-02

PHP တွင် is_a function သည်အရာဝတ်ထုတစ်ခုသည်သတ်မှတ်ထားသောအတန်းတစ်ခု၏ဥပမာတစ်ခု, ၎င်း၏အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

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

ဤတွင်တတိယ parameter $ ခွင့်ပြုမှု သည် Boolean Value ကို Boolean တန်ဖိုးတစ်ခုဖြစ်သည်။ အကယ်. ချိန်ညှိမှုမမှန်ကန်ပါကတရားစီရင်ခြင်းရလဒ်သည်မတိဖြစ်နိုင်သည်။


IS_A function ကို၏ parameters တွေကိုအသေးစိတ်ရှင်းပြချက်

  • $ object : check လုပ်ထားရန်အရာဝတ်ထုသို့မဟုတ်အတန်းအစားအမည်။

  • $ class_name : အတန်းအမည်ကိုစီရင်ခံရဖို့။

  • $ Allow_String (ပုံမှန်အားဖြင့် မှားယွင်း သည်) - $ အရာ ဝတ်ထုတစ်ခုအနေဖြင့်အရာဝတ်ထုတစ်ခုမဟုတ်ပါ။

$ Allow_String သည် မှားသော အခါ is_a သည် string ကိုဖြတ်သန်းသွားပါက မှားယွင်းစွာ ပြန်လာလိမ့်မည်။

$ Allow_String မှန် သည်ဆိုပါက ဒေါ်လာအရာဝတ်ထုသည် အတန်းအမည်ရှိ string တစ်ခုဖြစ်နိုင်သည်။ ဤအချိန်တွင် is_a သည် အတန်းသည် ဒေါ်လာ class_name သို့မဟုတ်တူညီသောအတန်းအစား၏ subclass ရှိမရှိဆုံးဖြတ်သည်။


သာမန်အမှားဥပမာ

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

 class ParentClass {}
class ChildClass extends ParentClass {}

$obj = new ChildClass();

// မမှန်ကန်ပါကတတိယ parameter တိုင်းသတ်မှတ်ထားtrue,ဒါပေမယ့်အရာဝတ်ထုလွန်ဖြစ်ပါတယ်
$result = is_a($obj, 'ParentClass', true);
var_dump($result);

ဤတွင် $ OBJ သည် ကလေးသူငယ် အနေဖြင့် ကလေးသူငယ်ကလွဲ၏ဥပမာတစ်ခုဖြစ်သော်လည်းကလေးသူငယ်က လွဲ ကလွဲမှားသောကလွဲမှားသောတတိယအချက်မှာ Third Parameter သည် မှန်ကန် သည် ရလဒ်သည်မျှော်လင့်ထားသည့် အတိုင်း မဖြစ်နိုင်ပါ။


တတိယ parameter ၏အမှားအယွင်းများကြောင့်ဖြစ်ပေါ်လာသောပြ problem နာကိုမည်သို့ရှောင်ရှားနိုင်မည်နည်း။

1 ။ ရှင်းရှင်းလင်းလင်းအရာဝတ်ထုနှင့် strings အကြားခွဲခြား

အကယ်. အရာဝတ်ထုကိုဖြတ်သန်းသွားကြောင်းသင်သေချာလျှင်, တတိယ parameter ကို မှားယွင်းသော သို့မဟုတ်ချန်လှပ်ထားရန်တတိယ parameter ကိုသတ်မှတ်သင့်သည်။

 $result = is_a($obj, 'ParentClass');

သို့မဟုတ်:

 $result = is_a($obj, 'ParentClass', false);

2 ။ Class Name String ကိုဆုံးဖြတ်ရန်အမှန်တကယ်လိုအပ်သည့်အခါသာမှန်ကန်စွာသတ်မှတ်ပါ။

သင်သည်အတန်းအစားအမည်ဖြင့်ဖြတ်သန်းသွားသောအခါအရာဝတ်ထုတစ်ခုမဟုတ်ပါ

 $className = 'ChildClass';
$result = is_a($className, 'ParentClass', true);

ဤနည်းအားဖြင့် IS_A သည် ကလေးကလွဲမှုကနေ ကန္တာစုံ ကနေအမွေဆက်ခံခြင်းရှိမရှိဆုံးဖြတ်လိမ့်မည်။


ကုဒ်နမူနာဖော်ပြချက်

 class ParentClass {}
class ChildClass extends ParentClass {}

$obj = new ChildClass();

// မှန်ကန်စွာအသုံးပြုပါ,တတိယ parameter တိုင်းကိုမလွန်ပါနှင့်false
if (is_a($obj, 'ParentClass')) {
    echo "အရာဝတ်ထုဖြစ်ပါတယ်ParentClassသို့မဟုတ်၎င်း၏ subclass ၏ဥပမာတစ်ခု。";
}

// အမှားသရုပ်ပြ,တတိယ parameter သည်ဖြစ်ပါတယ်truetime-pass အရာဝတ်ထု
if (is_a($obj, 'ParentClass', true)) {
    echo "ဤသည်မှန်ကန်စွာ output ကိုမဟုတ်ပါဘူး,因为တတိယ parameter သည်ဖြစ်ပါတယ်truetime-pass အရာဝတ်ထု会导致判断不准确。";
}

// မှန်ကန်သောသရုပ်ပြ,တတိယ parameter သည်ဖြစ်ပါတယ်trueအချိန် - ဖြတ်သန်းအတန်းအမည် string ကို
$className = 'ChildClass';
if (is_a($className, 'ParentClass', true)) {
    echo "ChildClassဟုတ်ကဲ့ParentClass၏ subclasses。";
}

အပိုဆောင်းအချက်အပိုဆောင်းအချက် - PHP7 + + InstanceOf operator ကို အသုံးပြု. အကြံပြုသည်

အမှန်တကယ်စီမံကိန်းများအနေဖြင့်အရာဝတ်ထုများကိုတရားစီရင်ရန် Instanceof operator ကိုအသုံးပြုရန်အတွက်ပုံမှန်အားဖြင့်အကြံပြုသည်။

 if ($obj instanceof ParentClass) {
    echo "အရာဝတ်ထုဖြစ်ပါတယ်ParentClassသို့မဟုတ်၎င်း၏ subclass ၏ဥပမာတစ်ခု。";
}

Instanceof သည် ပိုမိုအလိုလိုသိ။ လုံခြုံသောတတိယ parameter ၏မရေရာဒွိဟမှုမရှိပါ။


အကျဉ်းချုပ်

  • IS_A ကိုအသုံးပြုပြီးတဲ့အခါတတိယ parameter $ Allow_String ကို parameter အမျိုးအစားအရကျိုးကြောင်းဆီလျော်ကြောင်းသေချာအောင်လုပ်ပါ။

  • အကယ်. အရာဝတ်ထုကိုဖြတ်သန်းသွားပါကတတိယ parameter ကိုမသွားရန်သို့မဟုတ် မှားယွင်းစွာ သွားရန်အကြံပြုသည်။

  • အကယ်. အတန်းအမည်ရှိသည့် string ကိုဖြတ်သန်းပါကတတိယ parameter သည် မှန်ကန် ရန်သတ်မှတ်ထားရမည်။

  • is is_a is_a ကိုရှောင်ရှားရန်အရာဝတ်ထုအမျိုးအစားကိုအကဲဖြတ်ရန် Code ထဲ၌ code တွင် ရေးထိုး ရန်အကောင်းဆုံးဖြစ်သည်။

အထက်ပါနည်းလမ်းများမှတစ်ဆင့် IS_A ၏လုပ်ဆောင်မှု၏မတိကျသောတရားစီရင်ခြင်းရလဒ်များပြ problem နာကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီးအစီအစဉ်၏မှန်ကန်မှုကိုသေချာစေနိုင်သည်။


 // Accessurl
$url = "https://m66.net/example-path";
echo "<a href=\"$url\">点击这里Access</a>";