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

Type-Safe API ကိုဆုံးဖြတ်ရန် is_a () ကိုသုံးပါ

M66 2025-05-29

PHP တွင် interfaces သို့မဟုတ် processing data များတည်ဆောက်သည့်အခါ Parameter သည်စနစ်တည်ငြိမ်မှုနှင့်လုံခြုံရေးကိုသေချာစေရန် parameter သည် parameter အမျိုးအစားများကိုစစ်ဆေးသည်။ PHP သည် Runtime တွင် variable များကိုသာတရားစီရင်နိုင်သည့်ပြောင်းလဲနေသောစာရိုက်သည့်ဘာသာစကားဖြစ်သည်။ ထို့ကြောင့်အချို့သောအဓိကဇာတ်လမ်းများတွင် developer များသည် parameters များကိုအတိအလင်းစစ်ဆေးရန်လိုအပ်သည်။ IS_A () function သည်ကျွန်ုပ်တို့အသုံးပြုသောကိရိယာတစ်ခုဖြစ်သည်, အထူးသဖြင့်အရာဝတ်ထုကို ဦး စားပေးပရိုဂရမ်တစ်ခုတွင်အရာဝတ်ထုတစ်ခုသည်အချို့သောအရာဝတ်ထုတစ်ခုသို့မဟုတ်၎င်း၏ subclass ၏ဥပမာတစ်ခုရှိမရှိထိရောက်စွာဆုံးဖြတ်နိုင်သည်။

1 ။ is_a () ဘာလဲ

is_a () သည် PHP မှပါ 0 င်သော built-in function တစ်ခုဖြစ်သည်။ ၎င်း၏ function ရှေ့ပြေးပုံစံအောက်ပါအတိုင်းဖြစ်သည် -

 bool is_a(object|string $object_or_class, string $class, bool $allow_string = false)
  • $ Object_or_Class : တရားစီရင်ခြင်းခံရဖို့အရာဝတ်ထုသို့မဟုတ်အတန်းအစားအမည် (string ကို) ။

  • $ အတန်း : ပစ်မှတ်အတန်းအစားအမည်။

  • $ Allow_String : စစ်မှန်တဲ့ နှင့် $ object_or_Class string ကို string တစ်ခုဖြစ်ပါက,

2 ။ is_a ၏ဘုံအသုံးပြုမှု

is_a () ကို ရိုးရှင်းတဲ့ဥပမာတစ်ခုဖြင့်မည်သို့အသုံးပြုရမည်ကိုလေ့လာကြပါစို့။

 class Animal {}
class Dog extends Animal {}

$dog = new Dog();

if (is_a($dog, 'Animal')) {
    echo "ဒါ Animal အမျိုးအစားသို့မဟုတ် subclass ၏အရာဝတ်ထု。";
}

ထုတ်လုပ်မှု -

 ဒါ Animal အမျိုးအစားသို့မဟုတ် subclass ၏အရာဝတ်ထု。

ဒီဥပမာက is_a () ဟာအရာဝတ်ထုတစ်ခုသည်သတ်မှတ်ထားသောအတန်းတစ်ခု၏ဥပမာတစ်ခုရှိမရှိကိုဆုံးဖြတ်ရုံသာမက၎င်းသည်ထိုအတန်း၏ subclass ဟုတ်မဟုတ်ဆုံးဖြတ်ခြင်းရှိမရှိဆုံးဖြတ်နိုင်သည်။

3 ။ အဘယ်ကြောင့် is_a () ကိုပိုမိုလုံခြုံစိတ်ချရသောနှင့်ပိုမိုယုံကြည်စိတ်ချရသော interface ကိုတည်ဆောက်ရန်ဘာကြောင့်အသုံးပြုသနည်း။

API interfaces တွင်အထူးသဖြင့်ပြင်ပမှပြင်ပ input အချက်အလက်များကိုလက်ခံရရှိသည့်အခါ, 0 င်လာသော parameter type သည်မျှော်လင့်ချက်များနှင့်အမြဲကိုက်ညီသည်ဟုကျွန်ုပ်တို့မယူဆနိုင်ပါ။ ဥပမာအားဖြင့်, မူဝါဒပုံစံများကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါမှီခိုမှုထိုးသွင်းခြင်းသို့မဟုတ်ပြန်ပို့ရေးယန္တရားများကိုကိုင်တွယ်သောအခါ,

ပို့ကုန်လုပ်ငန်းဆောင်တာများအတွက်ကျွန်ုပ်တို့တွင် interface တစ်ခုရှိသည်ဆိုပါစို့။

 interface Exporter {
    public function export(array $data): string;
}

class JsonExporter implements Exporter {
    public function export(array $data): string {
        return json_encode($data);
    }
}

function handleExport($exporter, array $data) {
    if (!is_a($exporter, 'Exporter')) {
        throw new InvalidArgumentException("parameters တွေကိုအကောင်အထည်ဖော်ရမည် Exporter ထိသိျက်နှာ");
    }

    echo $exporter->export($data);
}

0 င်လာသည့် ဒေါ်လာတင်ပို့သူ Parameter သည် Expramer interface ကိုအကောင်အထည်ဖော်ရန်အတွက်ဤနေရာတွင်ကျွန်ုပ်တို့အသုံးပြုသည်။

4 ။ အမျိုးအစားအချက်များနှင့်ခြွင်းချက်ယန္တရားများကိုအသုံးပြုခြင်း

PHP 7+ သည်အမျိုးအစားအချက်ပေးလုပ်ဆောင်နိုင်စွမ်းကိုထောက်ပံ့သော်လည်း Parameter အမျိုးအစားများကို function signature များတွင်တိုက်ရိုက်ကြေငြာနိုင်သည်။

 function handleExport(Exporter $exporter, array $data) {
    echo $exporter->export($data);
}

သို့သော်အချို့သော dynamic ခေါ်ဆိုမှုများတွင် (ကွန်တိန်နာများမှအရာဝတ်ထုများမှအရာဝတ်ထုများမှအရာဝတ်ထုများကိုရယူခြင်း, ခေါ်ဆိုမှုနည်းစနစ်များစသည်တို့) ကိုရယူခြင်း, is_a () ကို လက်စွဲစာအုပ်စစ်ဆေးခြင်းအတွက်အလွန်လိုအပ်သည်။

5 ။ URL ဒေတာစိစစ်အတည်ပြုပေါင်းစပ်၏လက်တွေ့ကျတဲ့လျှောက်လွှာ

ဇာတ်လမ်းတစ်ပုဒ်ကိုစဉ်းစားကြည့်ပါ။ ရုပ်ပုံများကိုတင်ရန်အတွက် interface တစ်ခုတည်ဆောက်ထားပြီး, တင်ပြီးသည့်နောက် URL ကိုပြန်ပို့ရန်လိုအပ်သည်။ ကျွန်ုပ်တို့သည် uploader interface ကိုသတ်မှတ်ပြီးသက်ဆိုင်ရာ upload အတန်းကိုအမျိုးအစားအလိုက်ခေါ်ဆိုသည်။

 interface Uploader {
    public function upload(string $filePath): string;
}

class ImageUploader implements Uploader {
    public function upload(string $filePath): string {
        // PseudoDode:ဖိုင်တင်ခြင်းကိုတုပပါ
        return 'https://m66.net/uploads/' . basename($filePath);
    }
}

function handleUpload($uploader, string $filePath) {
    if (!is_a($uploader, 'Uploader')) {
        throw new InvalidArgumentException("မမှန်ကန်သော uploader အမျိုးအစား");
    }

    $url = $uploader->upload($filePath);
    echo "ဖိုင်တင်ခြင်း,Access address:$url";
}

ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည် uploader Object အမျိုးအစားသည်မျှော်လင့်ချက်များနှင့်အညီဖြစ်ကြောင်းသေချာစေရန်သာမကပိုမိုတည်ငြိမ်။ လုံခြုံသောတင်ပါးတင်သောစနစ်ကိုလည်းတည်ဆောက်နိုင်ရန်ကျွန်ုပ်တို့သာဖြစ်သည်။

6 ။ အကျဉ်းချုပ်

IS_A () သည်အထူးသဖြင့်ရှုပ်ထွေးသောစနစ်များတွင် Object အမျိုးအစားများကို PHP တွင်အရာဝတ်ထုအမျိုးအစားများကိုစီရင်ရန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည်၎င်း၏အကူအညီဖြင့်ကျွန်ုပ်တို့၏ interface ကိုပိုမိုခိုင်မာသည့်, ပြောင်းလွယ်ပြင်လွယ်နှင့်လုံခြုံမှုရှိနိုင်သည်။ ခေတ်သစ် PHP သည် Prompts Prompts နှင့်အလိုအလျောက်တင်ခြင်းကိုထောက်ခံသော်လည်း is_a () သည် ရှင်းလင်းပြတ်သားစွာမှီခိုမှုများ, အဓိကကျသောယုတ္တိဗေဒဆိုင်ရာအရာဝတ်ထုအမျိုးအစားများကိုကိုယ်တိုင်ကိုယ်ကျအကဲဖြတ်သည့်အလေ့အထကိုတီထွင်ခြင်းသည်သင်၏ code ၏အရည်အသွေးအတွက်အစိုင်အခဲအာမခံချက်ပေးလိမ့်မည်။