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