လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Class_exists နှင့် Interface_Exists အကြားခြားနားချက်ကဘာလဲ။ PHP interface နှင့် class အကြားတရားစီရင်ခြင်းနှင့်အတန်းနှိုင်းယှဉ်လေ့လာခြင်း

Class_exists နှင့် Interface_Exists အကြားခြားနားချက်ကဘာလဲ။ PHP interface နှင့် class အကြားတရားစီရင်ခြင်းနှင့်အတန်းနှိုင်းယှဉ်လေ့လာခြင်း

gitbox 2025-07-02

1 ။ class_exists function ကို

Class_Exists သည် PHP တွင်သတ်မှတ်ထားသောအတန်းအစားသတ်မှတ်ထားခြင်းရှိမရှိစစ်ဆေးရန် PHP တွင်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ အတန်းကိုသတ်မှတ်ထားတဲ့အတန်းကို သတ်မှတ် ပါ

သဒ္ဒါ:
 <span><span><span class="hljs-title function_ invoke__">class_exists</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$class_name</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$autoload</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
  • $ class_name - စစ်ဆေးရန်အတန်းအစားအမည်ကို string တစ်ခုဖြစ်ရမည်။

  • $ autoload : အလိုအလျောက်တင်ခြင်းကိုဖွင့ ရန်ဖြစ်စေ, False မှသတ်မှတ်ထားပါက PHP သည်အတန်းကိုအလိုအလျောက်ဖွင့်ရန်မကြိုးစားပါ။

ဥပမာ -
 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">class_exists</span></span><span>(</span><span><span class="hljs-string">'MyClass'</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'အမျိုးအစား MyClass သတ်မှတ်'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'အမျိုးအစား MyClass undefined'</span></span><span>;
}
</span></span>

အထက်ပါဥပမာတွင် MyClass ရှိပြီးသားရှိမရှိစစ်ဆေးရန် Class_exists ကို စစ်ဆေးရန်အသုံးပြုသည်။ အကယ်. ပစ္စုပ္ပန်ပါက "Class MyClass" ကိုသတ်မှတ်ခြင်း ", မဟုတ်ရင် MyClass" မသတ်မှတ်ထားပါ "ဟုသတ်မှတ်သည်။

Autoload ကို မှန်ကန်စွာ သတ်မှတ်သောအခါ PHP သည်အတန်းမ 0 င်ပါက PHP သည်၎င်းကိုဖွင့်ရန်ကြိုးစားလိမ့်မည်။ ပုံမှန်အားဖြင့် PHP သည် spl_autoload_register ကဲ့သို့သော autoloading ယန္တရားကို အသုံးပြု. PHP သည်အတန်းများကိုတင်ရန်ကြိုးစားသည်။


2 ။ interface_exists function ကို

Class_exists နှင့်ဆင်တူသည်, interface_exists သည် interface ကိုသတ်မှတ်မသတ်မှတ်ရန်အသုံးပြုသည်။ သတ်မှတ်ထားသော interface တည်ရှိမှုရှိမရှိညွှန်ပြသည့် စစ်မှန်သော သို့မဟုတ် မှားယွင်းသော ပြန်လာသည်။

သဒ္ဒါ:
 <span><span><span class="hljs-title function_ invoke__">interface_exists</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$interface_name</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$autoload</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
  • $ interface_NAME - စစ်ဆေးရမည့် interface name သည် string တစ်ခုဖြစ်ရမည်။

  • $ autoload : အလိုအလျောက်တင်ခြင်းကိုဖွင့ ရန်ဖြစ်စေ, False မှသတ်မှတ်ထားပါက PHP သည် interface ကိုအလိုအလျောက်ဖွင့်ရန်မကြိုးစားပါ။

ဥပမာ -
 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">interface_exists</span></span><span>(</span><span><span class="hljs-string">'MyInterface'</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'ထိသိျက်နှာ MyInterface သတ်မှတ်'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'ထိသိျက်နှာ MyInterface undefined'</span></span><span>;
}
</span></span>

ဤဥပမာတွင် interface_exists သည် Myinalface interface ကိုသတ်မှတ်ခြင်းရှိမရှိစစ်ဆေးသည်။ အကယ်. သတ်မှတ်ထားပါက "interface myinalinkace" ကိုအဓိပ္ပါယ်ဖွင့်ဆိုထားသည်။


3 ။ Class_exists နှင့် interface_exists အကြားခြားနားချက်

class_exists နှင့် interface_exists များသည်အလွန်ဆင်တူသော်လည်း၎င်းတို့အကြားမရှိမဖြစ်ကွဲပြားမှုများရှိသည်။

  • ကွဲပြားခြားနားသောရည်မှန်းချက်များကိုစစ်ဆေးပါ :

    • Class_Exists သည် အတန်းတစ်ခုသတ်မှတ်ထားခြင်းရှိမရှိစစ်ဆေးရန်အသုံးပြုသည်။

    • interface_exists သည် interface တစ်ခုသတ်မှတ်ခြင်းရှိမရှိစစ်ဆေးရန်အသုံးပြုသည်။

  • ကွဲပြားခြားနားသောအသုံးပြုမှု :

    • အတန်းများသည်များသောအားဖြင့်အရာဝတ်ထုများ၏တင်းပလိတ်များရှိပြီး၎င်းကို instantiate လုပ်နိုင်စွမ်းရှိသည်။

    • Interface ဆိုသည်မှာအတန်းအစားအကောင်အထည်ဖော်ရန်လုပ်ဆောင်မည့်လုပ်ဆောင်ချက်များကိုသတ်မှတ်သည့်စည်းဝေးကြီးတစ်ခုဖြစ်သည်။

  • အလိုအလျောက်တင်ခြင်း၏သက်ရောက်မှု :

    • နှစ် ဦး စလုံးလုပ်ဆောင်ချက်များကို autoload parameters တွေကိုထောက်ခံပါတယ်။ စစ်မှန်တဲ့ php လုပ်ပါက PHP သည် undefined အတန်းများသို့မဟုတ် interfaces များကိုအလိုအလျောက်ဖွင့်ရန်ကြိုးစားသည်။

    • ခြားနားချက်မှာလူတန်းစား 0 ယ်ယူသူများ၏အလိုအလျောက် 0 န်ဆောင်မှုပေးခြင်းကိုပုံမှန်အားဖြင့် (ဥပမာ Spl_autoload_register ) ၏ 0 င်ရောက်လာခြင်းကအတော်လေးရှားပါးသည်။


4 ။ ဇာတ်လမ်းနှိုင်းယှဉ်မှုကိုသုံးပါ

အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်မတူညီသောအခြေအနေများအပေါ် အခြေခံ. class_exists သို့မဟုတ် interface_exists ကို အသုံးပြုလိုခြင်းရှိမရှိကိုကျွန်ုပ်တို့မကြာခဏဆုံးဖြတ်ရန်လိုအပ်သည်။

  • Class_Exists ကို အသုံးပြုခြင်း -

    • အတန်းများကိုမကြာခဏအသုံးပြုသောအတန်းအစားကိုသတ်မှတ်ထားသောသို့မဟုတ်တင်ဆောင်ခြင်းရှိမရှိဆုံးဖြတ်သည်။

    • အလိုအလျောက်တင်ဆောင်သည့်ယန္တရားအောက်တွင်ဤလုပ်ဆောင်မှုကိုများသောအားဖြင့်စာသင်ခန်းသည်ထပ်တိုးသို့မဟုတ်ချက်ချင်းတားဆီးရန်အတန်းတက်ခြင်းရှိမရှိစစ်ဆေးရန်အသုံးပြုသည်။

    ဥပမာ -

     <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">class_exists</span></span><span>(</span><span><span class="hljs-string">'DatabaseConnection'</span></span><span>)) {
        </span><span><span class="hljs-variable">$db</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DatabaseConnection</span></span><span>();
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-comment">// 处理undefinedအမျိုးအစား的情况</span></span><span>
    }
    </span></span>
  • interface_exists ကို သုံးခြင်း -

    • interface တစ်ခုသတ်မှတ်ထားခြင်းရှိမရှိဆုံးဖြတ်ပါ, များသောအားဖြင့် polytymorphic နှင့်မှီခိုသောဆေးထိုးခြင်းဖြစ်သည့်အခြေအနေများတွင်အသုံးပြုသည်ကိုဆုံးဖြတ်ပါ။

    • အတန်းတစ်ခုသည် interface ကိုအကောင်အထည်ဖော်နေသလားဆိုတာဆုံးဖြတ်တဲ့အခါ interface တည်ရှိနေပြီဆိုတာကိုဆုံးဖြတ်ဖို့ interface_exists ကို ပထမဆုံးသုံးနိုင်တယ်။

    ဥပမာ -

     <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">interface_exists</span></span><span>(</span><span><span class="hljs-string">'LoggerInterface'</span></span><span>) &amp;&amp; </span><span><span class="hljs-variable">$logger</span></span><span> </span><span><span class="hljs-keyword">instanceof</span></span><span> LoggerInterface) {
        </span><span><span class="hljs-variable">$logger</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">log</span></span><span>(</span><span><span class="hljs-string">'မှတ်တမ်းသတင်းအချက်အလက်'</span></span><span>);
    }
    </span></span>