လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> is_a () + interface_exists () interface interface ကို detect

is_a () + interface_exists () interface interface ကို detect

M66 2025-05-28

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်အတန်းတစ်ခုသည်အချို့သော interface ကိုအကောင်အထည်ဖော်မသင့်ဆုံးဖြတ်ရန်လိုအပ်ကြောင်းမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ PHP သည် ဤလိုအပ်ချက်ကိုရရှိရန်နည်းလမ်းများစွာကိုထောက်ပံ့ရန်နည်းလမ်းများစွာကိုထောက်ပံ့ပေးသော်လည်း , ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခု၏အခန်းကဏ် and ကိုအသေးစိတ်မိတ်ဆက်ပေးလိမ့်မည်။


1 ။ is_a () function ကိုမိတ်ဆက်

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 ကိုအကောင်အထည်ဖော်ခြင်းရှိမရှိကိုတိုက်ရိုက်ဆုံးဖြတ်နိုင်သည်။


2 ။ တိကျသော interface_exists () function ကို မိတ်ဆက်

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 များကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုရှောင်ရှားနိုင်သည်။


3 ။ is_a () နှင့် interface_exists () interface_exists () နှင့် interface_exists () ကိုပေါင်းစပ်ပါ

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 မတည်ရှိသည့်အခါအလားအလာအမှားများကိုရှောင်ရှားသည်။


4 ။ လက်တွေ့ကျသောလျှောက်လွှာဥပမာ

ကျွန်ုပ်တို့တွင်အောက်ပါ 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

5 ။ မှတ်စုဖို့အရာ

  • 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 များကိုအသုံးပြုပါ က ,