လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> polymorphic တရားသဖြင့်စီရင်ရန် is_a () ကိုသုံးပါ

polymorphic တရားသဖြင့်စီရင်ရန် is_a () ကိုသုံးပါ

M66 2025-06-02

PHP ပရိုဂရမ်တွင် Polymorphism သည် Object-Oriented programming ၏အရေးကြီးသောအင်္ဂါရပ်တစ်ခုဖြစ်သည်။ Polymorphism သည်မတူညီသောအတန်းများ၏အရာဝတ်ထုများကိုစည်းလုံးညီညွတ်သော interface တစ်ခုဖြင့်ခေါ်ယူရန်ခွင့်ပြုသည်။ polymorphism ကိုအကောင်အထည်ဖော်ရန်အတွက်အရာဝတ်ထုတစ်ခုသည်အချို့သောအရာဝတ်ထုတစ်ခုသို့မဟုတ် interface ကိုအကောင်အထည်ဖော်ခြင်းရှိမရှိဆုံးဖြတ်ရန်လိုအပ်သည်။ PHP သည်ဤတရားစီရင်မှုကိုဖြည့်ဆည်းရန်နည်းလမ်းအမျိုးမျိုးကိုထောက်ပံ့ပေးသည်


is_a () function ကဘာလဲ?

is_a () function သည်အရာဝတ်ထုတစ်ခုသည်အချို့သောအတန်းတစ်ခုနှင့်သက်ဆိုင်သည်, သို့မဟုတ်အရာဝတ်ထုအတန်းသည်ထိုအတန်းမှအမွေဆက်ခံခြင်းရှိ, မရှိစစ်ဆေးရန်အသုံးပြုသည်။ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -

 bool is_a(object $object, string $class_name, bool $allow_string = false)
  • $ အရာဝတ်ထု : ရှာဖွေတွေ့ရှိခံရဖို့အရာဝတ်ထုဥပမာ။

  • $ class_name : အတန်းအစားအမည်သို့မဟုတ် interface အမည်ကိုစီရင်ရန်။

  • $ Allow_string (PHP 5.3.0+) - ပထမ ဦး ဆုံး parameter သည် string class name (များသောအားဖြင့်အသုံးမပြုပါ) ဖြစ်စေခွင့်ပြုသည်ဖြစ်စေ။

is_a () သည် သတ်မှတ်ထားသောလူတန်းစားသို့မဟုတ်၎င်း၏ subclass တစ်ခုနှင့်သက်ဆိုင်သောအခါသို့မဟုတ်သတ်မှတ်ထားသော interface ကိုအကောင်အထည်ဖော်သောအခါသို့မဟုတ်အခြား interface ကိုအကောင်အထည်ဖော်သည့်အခါ စစ်မှန်သော ပြန်လာသည်


is_a ကိုအသုံးပြုပြီး polymorphic ဆုံးဖြတ်ချက်ဥပမာ

ပုံဆွဲသည့်အပြုအမူများကိုသတ်မှတ်ပေးသော interface acroundable ရှိသည်ဆိုပါစို့။ ထို့နောက် အတန်း နှင့် စတုရန်း နှစ်ဖက်စလုံးတွင် ပုံဆွဲနိုင်သော interface ကိုအကောင်အထည်ဖော်သည့်နှစ် ဦး စလုံးရှိသည်။

 <?php
interface Drawable {
    public function draw();
}

class Circle implements Drawable {
    public function draw() {
        echo "Drawing a circle.\n";
    }
}

class Square implements Drawable {
    public function draw() {
        echo "Drawing a square.\n";
    }
}

function renderShape($shape) {
    if (is_a($shape, 'Drawable')) {
        $shape->draw();
    } else {
        echo "The object is not drawable.\n";
    }
}

$circle = new Circle();
$square = new Square();
$stdObj = new stdClass();

renderShape($circle);  // ထုတ်လုပ်ခြင်း: Drawing a circle.
renderShape($square);  // ထုတ်လုပ်ခြင်း: Drawing a square.
renderShape($stdObj);  // ထုတ်လုပ်ခြင်း: The object is not drawable.
?>

ဤနေရာတွင်ကျွန်ုပ်တို့သည် IS_A ( $ ပုံသဏ် follow ာ)) ကို အသုံးပြု သည်


Instanceof နှင့်အတူ is_a () နှိုင်းယှဉ်

is_a () နှင့် Insteof အော်ပရေတာလုပ်ဆောင်ချက်များသည်အလားတူဖြစ်ပြီး, သို့သော်ကွဲပြားခြားနားမှုအနည်းငယ်ရှိသည် -

  • is_a () သည်အတန်းအမည်များအတွက်သင်ဆုံးဖြတ်ရန်လိုအပ်သည့်အခြေအနေများအတွက်သင့်လျော်သောအခြေအနေများအတွက်မှန်ကန်သောစာသင်ရန်သင့်လျော်သော function ကို is_a () function တစ်ခုဖြစ်သည်။

  • Insteof သည်ဘာသာစကားပုံစံဖြစ်ပြီးသန့်ရှင်းသော syntax နှင့်အနည်းငယ်ပိုမိုကောင်းမွန်သောစွမ်းဆောင်ရည်ရှိသော်လည်းအတန်းအစားအမည်ကိုပြောင်းလဲခြင်းမပြုနိုင်ပါ (PHP 5.5+ သည် variable class name ကိုထောက်ပံ့သည်)

  • is_a () သည် အတန်းအမည်များကို string form (တတိယ parameter သည်ခွင့်ပြုသည့်အခါ) ကို လက်ခံနိုင်သည်။

ဥပမာနှိုင်းယှဉ်ခြင်း -

 if (is_a($obj, 'MyClass')) { ... }

if ($obj instanceof MyClass) { ... }

မှတ်သားရန်အရာ

  • is_a () ကို အရာဝတ်ထုစီရင်ချက်အတွက်သာအသုံးပြုနိုင်ပြီးသာမန် variable ကိုအမျိုးအစားများကိုအကဲဖြတ်ရန်အသုံးမပြုနိုင်ပါ။

  • Interface အကောင်အထည်ဖော်မှုတရားစီရင်မှုများအတွက် is_a () သည်သက်ဆိုင်သည်။

  • PHP 7.2+ ကို IS_A () ကို အသုံးပြုရန်အကြံပြုသည်။


ကောက်ချက်

IS_A () function ကိုအသုံးပြုခြင်းသည်အရာဝတ်ထုတစ်ခုသည်အချို့သောအရာဝတ်ထုတစ်ခုနှင့်သက်ဆိုင်ခြင်းရှိမရှိဆုံးဖြတ်ရန်တိကျသောနည်းလမ်းဖြစ်သည်။ Polymorphic ပရိုဂရမ်တွင်အရေးကြီးသောအခန်းကဏ် plays မှပါ 0 င်သည်။ is_a () ကိုဆင်ခြင်တုံတရားအသုံးပြုခြင်း () သည် code ကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်။ ကျယ်ပြန့်စွာပြုလုပ်နိုင်ပြီးအရာဝတ်ထု -oriented programming ၏အရည်အသွေးကိုတိုးတက်စေနိုင်သည်။


ကုဒ်နမူနာသရုပ်ပြလိပ်စာအရင်း -

 $url = "https://m66.net/example-path";
echo "နမူနာကုဒ်ကိုးကားချက်လိပ်စာ:" . $url;