PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်အတန်းတစ်ခုသည်အချို့သော interface ကိုအကောင်အထည်ဖော်မသင့်ဆုံးဖြတ်ရန်လိုအပ်ကြောင်းမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ PHP သည် ဤလိုအပ်ချက်ကိုရရှိရန်နည်းလမ်းများစွာကိုထောက်ပံ့ရန်နည်းလမ်းများစွာကိုထောက်ပံ့ပေးသော်လည်း , ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခု၏အခန်းကဏ် and ကိုအသေးစိတ်မိတ်ဆက်ပေးလိမ့်မည်။
is_a () function သည်အရာဝတ်ထုတစ်ခုသည်အချို့သောလူတန်းစားသို့မဟုတ် interface တစ်ခု၏ဥပမာတစ်ခုရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုသည်။ ၎င်း၏ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
bool is_a(object|string $object_or_class, string $class_name, bool $allow_string = false)
$ Object_or_Class : အရာဝတ်ထုဥပမာတစ်ခုသို့မဟုတ်အတန်းအစားအမည် (တတိယ parameter သည်မှန်သောအခါ) ဖြစ်နိုင်သည်။
$ class_name : ရှာဖွေတွေ့ရှိခံရဖို့အတန်းသို့မဟုတ် interface အမည်။
$ Allow_String : ပထမ ဦး ဆုံး parameter ကို string ကို class name ဖြစ်ရန်ခွင့်ပြုမထား။
ဥပမာ -
class MyClass implements MyInterface {}
interface MyInterface {}
$obj = new MyClass();
var_dump(is_a($obj, 'MyInterface')); // bool(true)
is_a () အရာဝတ်ထုတစ်ခုသည် interface ကိုအကောင်အထည်ဖော်ခြင်းရှိမရှိကိုတိုက်ရိုက်ဆုံးဖြတ်နိုင်သည်။
interface_exists () function ကို () function ကိုအသုံးပြုသော interface တစ်ခုသတ်မှတ်ခြင်းရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုသည်။ Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
bool interface_exists(string $interface_name, bool $autoload = true)
$ interface_name : interface အမည်။
$ autoload : အလိုအလျောက် interfaces ၏အလိုအလျောက်ဖွင့်ခြင်း (ပုံမှန်စစ်မှန်တဲ့) ကိုခွင့်ပြုရန်ဖြစ်စေ။
ဥပမာ -
if (interface_exists('MyInterface')) {
echo "အဆိုပါ interface ကိုတည်ရှိသည်";
} else {
echo "အဆိုပါ interface မတည်ရှိပါဘူး";
}
ဤလုပ်ဆောင်မှုသည် is_a () မ ခေါ်မီ interface ရှိမတည်မီတည်ရှိခြင်းရှိမရှိစစ်ဆေးသည်။ ၎င်းသည် undefined interfaces များကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုရှောင်ရှားနိုင်သည်။
is_a () ကို သာဆုံးဖြတ်သောအခါ, interface မတည်ရှိပါက၎င်းသည်မမျှော်လင့်သောရလဒ်များကိုဖြစ်ပေါ်စေလိမ့်မည်။ ဤအခြေအနေကိုရှောင်ရှားရန် interface ကိုသတ်မှတ်ခြင်းရှိမရှိအတည်ပြုရန် interface_exists () ကို အသုံးပြုရန် အကြံပြုသည်။
နမူနာကုဒ်:
$className = 'SomeClass';
$interfaceName = 'SomeInterface';
if (interface_exists($interfaceName)) {
if (is_a($className, $interfaceName, true)) {
echo "$className interface ကိုအကောင်အထည်ဖော် $interfaceName";
} else {
echo "$className အဘယ်သူမျှမ interface ကိုအကောင်အထည်ဖော်သည် $interfaceName";
}
} else {
echo "ထိသိျက်နှာ $interfaceName မတည်ရှိပါဘူး";
}
ဒီမှာအချက်ကတော့
interface_exists () () interface ရှိကြောင်းသေချာစေသည်။
တတိယ parameter သည် is_a () သည်ပထမ ဦး ဆုံး parameter ကို class name string တစ်ခုဖြစ် ခွင့် ပြုသည်။
ဤလုပ်ဆောင်မှုနှစ်ခုကိုပေါင်းစပ်ခြင်း interface မတည်ရှိသည့်အခါအလားအလာအမှားများကိုရှောင်ရှားသည်။
ကျွန်ုပ်တို့တွင်အောက်ပါ interface နှင့် class ကိုရှိသည်ဆိုပါစို့:
interface LoggerInterface {
public function log($message);
}
class FileLogger implements LoggerInterface {
public function log($message) {
echo "Log to file: $message";
}
}
ကျွန်ုပ်တို့သည် Charge Filelogger သည် loggerinface ကို အကောင်အထည်ဖော်ခြင်းရှိမရှိဆုံးဖြတ်လိုပါသည်။
$class = 'FileLogger';
$interface = 'LoggerInterface';
if (interface_exists($interface)) {
if (is_a($class, $interface, true)) {
echo "$class interface ကိုအကောင်အထည်ဖော် $interface";
} else {
echo "$class အဘယ်သူမျှမ interface ကိုအကောင်အထည်ဖော်သည် $interface";
}
} else {
echo "ထိသိျက်နှာ $interface မတည်ရှိပါဘူး";
}
ထုတ်လုပ်မှု -
FileLogger interface ကိုအကောင်အထည်ဖော် LoggerInterface
interface name နှင့် class name ကိုမှန်ကန်စွာစာလုံးပေါင်းကြောင်းသေချာပါစေ။
IS_A () တတိယ parameter သည် မှန်ကန် သည့်အခါအတန်းအစားအမည်ကိုအတည်ပြုရန်ခွင့်ပြုသည်။
အကယ်.သာသာအရာဝတ်ထုဥပမာအားဖြင့် is_a () ကို သာလွန်ပါကတတိယ parameter သည် မှားယွင်းရန် ။
undefined interfaces ကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုကာကွယ်ရန် interface_exists () ကို သုံးပါ။
IS_A () နှင့် interface_exists () ကို အသုံးပြုခြင်းအားဖြင့်သင်သည်တူညီသော interface ကိုအကောင်အထည်ဖော်ခြင်းရှိမရှိသင်ပိုမိုလုံခြုံစွာနှင့်တိကျစွာဆုံးဖြတ်နိုင်သည်။ ဤချဉ်းကပ်မှုသည်ကြီးမားသောစီမံကိန်းများအတွက်ပြုပြင်ပြောင်းလဲမှုအမျိုးအစားစစ်ဆေးခြင်းအတွက်သင့်လျော်သည်။
// ကောင်းသောအသေးစိတ်ဥပမာ
$class = 'ExampleClass';
$interface = 'ExampleInterface';
if (interface_exists($interface)) {
if (is_a($class, $interface, true)) {
echo "$class interface ကိုအကောင်အထည်ဖော် $interface";
} else {
echo "$class အဘယ်သူမျှမ interface ကိုအကောင်အထည်ဖော်သည် $interface";
}
} else {
echo "ထိသိျက်နှာ $interface မတည်ရှိပါဘူး";
}
သင်၏ကုဒ်အတွင်းရှိ URLs များကိုအသုံးပြုပါ က ,