PHP တွင် interfaces သို့မဟုတ် processing data များတည်ဆောက်သည့်အခါ Parameter သည်စနစ်တည်ငြိမ်မှုနှင့်လုံခြုံရေးကိုသေချာစေရန် parameter သည် parameter အမျိုးအစားများကိုစစ်ဆေးသည်။ PHP သည် Runtime တွင် variable များကိုသာတရားစီရင်နိုင်သည့်ပြောင်းလဲနေသောစာရိုက်သည့်ဘာသာစကားဖြစ်သည်။ ထို့ကြောင့်အချို့သောအဓိကဇာတ်လမ်းများတွင် developer များသည် parameters များကိုအတိအလင်းစစ်ဆေးရန်လိုအပ်သည်။ IS_A () function သည်ကျွန်ုပ်တို့အသုံးပြုသောကိရိယာတစ်ခုဖြစ်သည်, အထူးသဖြင့်အရာဝတ်ထုကို ဦး စားပေးပရိုဂရမ်တစ်ခုတွင်အရာဝတ်ထုတစ်ခုသည်အချို့သောအရာဝတ်ထုတစ်ခုသို့မဟုတ်၎င်း၏ subclass ၏ဥပမာတစ်ခုရှိမရှိထိရောက်စွာဆုံးဖြတ်နိုင်သည်။
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 တစ်ခုဖြစ်ပါက,
is_a () ကို ရိုးရှင်းတဲ့ဥပမာတစ်ခုဖြင့်မည်သို့အသုံးပြုရမည်ကိုလေ့လာကြပါစို့။
class Animal {}
class Dog extends Animal {}
$dog = new Dog();
if (is_a($dog, 'Animal')) {
echo "ဒါ Animal အမျိုးအစားသို့မဟုတ် subclass ၏အရာဝတ်ထု。";
}
ထုတ်လုပ်မှု -
ဒါ Animal အမျိုးအစားသို့မဟုတ် subclass ၏အရာဝတ်ထု。
ဒီဥပမာက is_a () ဟာအရာဝတ်ထုတစ်ခုသည်သတ်မှတ်ထားသောအတန်းတစ်ခု၏ဥပမာတစ်ခုရှိမရှိကိုဆုံးဖြတ်ရုံသာမက၎င်းသည်ထိုအတန်း၏ subclass ဟုတ်မဟုတ်ဆုံးဖြတ်ခြင်းရှိမရှိဆုံးဖြတ်နိုင်သည်။
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 ကိုအကောင်အထည်ဖော်ရန်အတွက်ဤနေရာတွင်ကျွန်ုပ်တို့အသုံးပြုသည်။
PHP 7+ သည်အမျိုးအစားအချက်ပေးလုပ်ဆောင်နိုင်စွမ်းကိုထောက်ပံ့သော်လည်း Parameter အမျိုးအစားများကို function signature များတွင်တိုက်ရိုက်ကြေငြာနိုင်သည်။
function handleExport(Exporter $exporter, array $data) {
echo $exporter->export($data);
}
သို့သော်အချို့သော dynamic ခေါ်ဆိုမှုများတွင် (ကွန်တိန်နာများမှအရာဝတ်ထုများမှအရာဝတ်ထုများမှအရာဝတ်ထုများကိုရယူခြင်း, ခေါ်ဆိုမှုနည်းစနစ်များစသည်တို့) ကိုရယူခြင်း, is_a () ကို လက်စွဲစာအုပ်စစ်ဆေးခြင်းအတွက်အလွန်လိုအပ်သည်။
ဇာတ်လမ်းတစ်ပုဒ်ကိုစဉ်းစားကြည့်ပါ။ ရုပ်ပုံများကိုတင်ရန်အတွက် 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 အမျိုးအစားသည်မျှော်လင့်ချက်များနှင့်အညီဖြစ်ကြောင်းသေချာစေရန်သာမကပိုမိုတည်ငြိမ်။ လုံခြုံသောတင်ပါးတင်သောစနစ်ကိုလည်းတည်ဆောက်နိုင်ရန်ကျွန်ုပ်တို့သာဖြစ်သည်။
IS_A () သည်အထူးသဖြင့်ရှုပ်ထွေးသောစနစ်များတွင် Object အမျိုးအစားများကို PHP တွင်အရာဝတ်ထုအမျိုးအစားများကိုစီရင်ရန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည်၎င်း၏အကူအညီဖြင့်ကျွန်ုပ်တို့၏ interface ကိုပိုမိုခိုင်မာသည့်, ပြောင်းလွယ်ပြင်လွယ်နှင့်လုံခြုံမှုရှိနိုင်သည်။ ခေတ်သစ် PHP သည် Prompts Prompts နှင့်အလိုအလျောက်တင်ခြင်းကိုထောက်ခံသော်လည်း is_a () သည် ရှင်းလင်းပြတ်သားစွာမှီခိုမှုများ, အဓိကကျသောယုတ္တိဗေဒဆိုင်ရာအရာဝတ်ထုအမျိုးအစားများကိုကိုယ်တိုင်ကိုယ်ကျအကဲဖြတ်သည့်အလေ့အထကိုတီထွင်ခြင်းသည်သင်၏ code ၏အရည်အသွေးအတွက်အစိုင်အခဲအာမခံချက်ပေးလိမ့်မည်။