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>
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 အကောင်အထည်ဖော်မှုကိုသာစစ်ဆေးသည်။
အကယ်. အတန်းအစားအမည်ရှိ string ကိုဖြတ်သန်းသွားပါက, အ ရာဝတ်ထုတစ်ခုမဟုတ်ပါကတတိယ parameter $ ခွင့်ပြုမှုကို မှန်ကန်စွာ သတ်မှတ်ထားရမည် ။
<code> interface 0 န်ဆောင်မှု}Class apiservice imples {}
$ ClassName = apiservice :: Class;
Var_Dump (is_a ($ classname, service :: Class, True)); // bool (true)
</ code>
တတိယ parameter သည်မှောက်တင်သို့မဟုတ် မှားယွင်းစွာ သတ်မှတ်ထားသည့်အခါအထက်ပါကုဒ်သည် မှားယွင်းသော ပြန်လာလိမ့်မည်။
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 မှားလား, ဒါမှမဟုတ် အသုံးပြုမှုကို မတင်သွင်းဘူးဆိုရင်။
is_a () သည် အရာဝတ်ထုဖြစ်ရပ်များကိုစစ်ဆေးခြင်းတွင် Instanceof Instanceof နှင့်တသမတ်တည်းပြုမူသော်လည်း SNETANOF သည် စွမ်းဆောင်ရည်နှင့်ကုဒ်ဖတ်နိုင်သည့်အရပိုကောင်းသည်။ ဥပမာအားဖြင့်:
<code> အကယ်. (အကယ်. $ logger instanceof loggerinterface) {// အကြံပြု} </ code>Class Name ကို string form မှာ drinnic အရတရားသူကြီးတရားသူကြီးဆုံးဖြတ်ဖို့မလိုအပ်ဘူးဆိုရင်ပထမ ဦး ဆုံး instanceof ကို သုံးဖို့အကြံပြုထားပါတယ်။
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>