လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> interface အကောင်အထည်ဖော်မှုကိုရှာဖွေတွေ့ရှိသောအခါ is_a () မှတ်စုများ

interface အကောင်အထည်ဖော်မှုကိုရှာဖွေတွေ့ရှိသောအခါ is_a () မှတ်စုများ

M66 2025-06-05

အခြေခံအသုံးပြုမှု

is_a () function ကို၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

<code> is_a (အရာဝတ်ထု | string_or_Class_class_class, string_class, string_cel_string = false: bool </ code>
  • $ Object_or_Class သည် အရာဝတ်ထုတစ်ခုသို့မဟုတ်အတန်းအစားအမည် (string) ဖြစ်နိုင်သည်။

  • $ အတန်း သည်ပစ်မှတ်ထားလူတန်းစားသို့မဟုတ်ရှာဖွေတွေ့ရှိခံရမည့် interface အမည်ဖြစ်သည်။

  • $ Allow_String သည် ပထမ ဦး ဆုံး parameter သည် string တစ်ခု (အတန်းအစားအမည်) ကိုခွင့်ပြုသည်ဖြစ်စေ ,

ဥပမာ -

<code> interface> interface loggerinterface}

class filelogger {} loggerinterface {}

$ logger = filelogger အသစ် (),

var_dump (is_a ($ logger, loggerinterface :: class)); // output: bool (true)
</ code>


မှတ်သားရန်အရာ

1 ။ ၎င်းသည်အကောင်အထည်ဖော်မှုကိုကွင်းဆက်ပေါ်ရှိမိဘမျက်နှာပြင်ကိုအမွေဆက်ခံခြင်း,

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

<code> interface တစ်ခု {} interface ခက {} တိုးချဲ့

MyClass MyClass ကိုအကောင်အထည်ဖော်သည်။

$ obj = myclass ();

// မှန်ကန်သော
var_dump (is_a ($ obj, b :: class)); // bool (true)

// လည်းမှန်ကန်သော, B က a အမွေဆက်ခံသောကြောင့်,
var_dump (is_a ($ obj, a :: class)); // bool (true)
</ code>

နိဂုံး - interface ကိုအမွေဆက်ခံမှုကွင်းဆက်ကို is_a ()) ဟုသတ်မှတ်သည်။ ၎င်းသည် "Direct" interface အကောင်အထည်ဖော်မှုကိုသာစစ်ဆေးသည်။


2 ။ strings ကိုအရာဝတ်ထုရှာဖွေတွေ့ရှိအဖြစ်ဖြတ်သန်းသောအခါ $ Allow_string ကို ဖွင့်ထားရမည်ဖြစ်သည်

အကယ်. အတန်းအစားအမည်ရှိ string ကိုဖြတ်သန်းသွားပါက, ရာဝတ်ထုတစ်ခုမဟုတ်ပါကတတိယ parameter $ ခွင့်ပြုမှုကို မှန်ကန်စွာ သတ်မှတ်ထားရမည်

<code> interface 0 န်ဆောင်မှု}

Class apiservice imples {}

$ ClassName = apiservice :: Class;

Var_Dump (is_a ($ classname, service :: Class, True)); // bool (true)
</ code>

တတိယ parameter သည်မှောက်တင်သို့မဟုတ် မှားယွင်းစွာ သတ်မှတ်ထားသည့်အခါအထက်ပါကုဒ်သည် မှားယွင်းသော ပြန်လာလိမ့်မည်။


3 ။ interface name သည်အပြည့်အဝအရည်အချင်းပြည့်မီသောအမည်ဖြစ်ရမည်

IS_A () ကို အသုံးပြုသောအခါ interface name သည်အရည်အချင်းပြည့်ဝသောအတန်းအစားအမည် (I.E. အပါအ 0 င်) ဖြစ်သည်။ ၎င်းသည် Autoloading ယန္တရားများသို့မဟုတ်ပိုမိုရှုပ်ထွေးသော namespace အဆောက်အအုံများကိုအသုံးပြုသည့်အခါအထူးအရေးကြီးသည်။

ဥပမာအားဖြင့်:

<code> namespace app \ wike;

interface ကို pendinterface {}

Class PayPalservice သည် Pendinterface ကိုအသုံးပြုသည်။
</ code>

စမ်းသပ်မှုမှအာရုံစိုက်ပါ:

<code> app \ wagings \ pendpalservice; app \ t ဝန် 0 န်ဆောင်မှုများ \ pendinterface ကိုသုံးပါ။

$ 0 န်ဆောင်မှု = PayPalservice အသစ် (),

var_dump (is_a ($ 0 န်ဆောင်မှု, ငွေပေးချေခြင်း, // bool (true)
</ code>

ဒီလိုမှမဟုတ်ရင် မှားယွင်းတဲ့ အဖြေကိုအထူးသဖြင့် interface name မှားလား, ဒါမှမဟုတ် အသုံးပြုမှုကို မတင်သွင်းဘူးဆိုရင်။


4 ။ အရာဝတ်ထုစစ်ဆေးခြင်းအတွက် Instanceof အစားထိုးရန်မထောက်ခံပါ

is_a () သည် အရာဝတ်ထုဖြစ်ရပ်များကိုစစ်ဆေးခြင်းတွင် Instanceof Instanceof နှင့်တသမတ်တည်းပြုမူသော်လည်း SNETANOF သည် စွမ်းဆောင်ရည်နှင့်ကုဒ်ဖတ်နိုင်သည့်အရပိုကောင်းသည်။ ဥပမာအားဖြင့်:

<code> အကယ်. (အကယ်. $ logger instanceof loggerinterface) {// အကြံပြု} </ code>

Class Name ကို string form မှာ drinnic အရတရားသူကြီးတရားသူကြီးဆုံးဖြတ်ဖို့မလိုအပ်ဘူးဆိုရင်ပထမ ဦး ဆုံး instanceof ကို သုံးဖို့အကြံပြုထားပါတယ်။


5 ။ interface ကိုအခြား interface ကိုအကောင်အထည်ဖော်မလားဆိုတာစစ်ဆေးပါ

interface ကိုယ်နှိုက်ကိုချက်ချင်းမလုပ်နိုင်သော်လည်း, interface တစ်ခုသည်အခြားအမွေဆက်ခံနေသည်ကိုသင်စစ်ဆေးနိုင်သည်။ ၎င်းသည်ကွန်တိန်နာများကိုအလိုအလျောက်မှတ်ပုံတင်ခြင်းသို့မဟုတ်အလိုအလျောက်မှတ်ပုံတင်သောအခါ၎င်းသည်အသုံးဝင်သည်။

<code> interface bollanthargeace {} interface sadinterface သည်ဘ 0 interface ိညာဉ်ကိုတိုးချဲ့သည် {}

var_dump (is_a (sectinterface :: Class, Baster Class, Baster Class), // bool (true)
</ code>

ဤအသုံးပြုမှုကိုများသောအားဖြင့် class_implements () ကဲ့သို့သောလုပ်ဆောင်ချက်များကိုအသုံးပြုလေ့ရှိပြီးအထူးသဖြင့်ကွန်တိန်နာစကင်ဖတ်စစ်ဆေးရန်အတွက်သင့်တော်သည်။

<code> $ classes = ['M66.net/serverververvice.php', 'M66.Net/serviceviceervice.php'];

foreach ($ classpath အဖြစ် $ အတန်းများ) {
// စာသင်ခန်းကိုရောင်ပြန်ဟပ်ခြင်းသို့မဟုတ် dynamically loading ပြီးနောက်, က interface ကိုအကောင်အထည်ဖော်မရှိမရှိစစ်ဆေးပါ
$ class = get_class_from_file ($ classpath); // ဤ function ကိုသင်အကောင်အထည်ဖော်ရန်ဆိုပါစို့

 if (is_a($class, \App\Contracts\HandlerInterface::class, true)) {
    // ဝန်ဆောင်မှုဝန်ဆောင်မှု
}

}
</ code>