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

class_exists မှတစ်ဆင့်အတန်းတစ်ခုမှတဆင့်သတ်မှတ်ထားသော interface ကိုအကောင်အထည်ဖော်ခြင်းရှိမရှိဆုံးဖြတ်ရန်။

gitbox 2025-09-28

အိုကေ, မင်းလိုချင်တာကိုနားလည်တယ် PHP ဆောင်းပါးတစ်ပုဒ်ရေးရန်ကျွန်ုပ်အားကူညီလိမ့်မည်။ ၎င်းသည်မသက်ဆိုင်သောအကြောင်းအရာများပါ 0 င်နိုင်သည့်အတွက်အဓိကစာသားသည်ခေါင်းစဉ်၏အကြောင်းအရာများကိုအပြည့်အဝရှင်းပြပြီးအလျားလိုက်လိုင်းများနှင့်ခွဲခြားလိမ့်မည်။ ဆောင်းပါးကတိုက်ရိုက်အဆုံးသတ်လိမ့်မယ်။ ဒီမှာဥပမာတစ်ခုပါ။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဤသည်စာသားနှင့်အတူလုပ်ဖို့ဘာမျှမသောယခင်အစိတ်အပိုင်းတစ်ခုဖြစ်ပါတယ်</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"သတ္တုတွင်းမှကြိုဆိုပါသည်PHPလေ့လာမှုမှတ်စုများ!&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-variable">$time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"လက်ရှိအချိန်က:<span class="hljs-subst">$time</span></span></span><span>&lt;br&gt;";
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * ဘဲှ့:ဘယ်လိုဖြတ်သန်းရမလဲclass_existsတစ် ဦး interface ကိုအချို့သောလူတန်းစားကအကောင်အထည်ဖော်ခြင်းရှိမရှိဆုံးဖြတ်ပါ?
 *
 * တည်နေPHPဖွံ့ဖြိုးမှုအောက်မှာ,တခါတရံမှာကျွန်ုပ်တို့သည်အချို့သော interface ကိုအတန်းတစ်ခုဖြင့်အကောင်အထည်ဖော်ခြင်းရှိမရှိဆုံးဖြတ်လိုသည်။,သက်ဆိုင်ရာယုတ္တိဗေဒအပြောင်းအလဲနဲ့စေရန်အလို့ငှာ。
 * PHPဒီဟာကိုအောင်မြင်အောင်လုပ်ဖို့ built-in function များစွာကိုထောက်ပံ့ပေးတယ်,အဓိကသူများဖြစ်ကြသည်class_exists()နှင့်interface_exists(),လည်းပဲis_subclass_of()နှင့်in_array()စောင့်。
 *
 * တစ်、နားလည်class_exists()နှင့်interface_exists()
 * - class_exists(string $className, bool $autoload = true): သတ်မှတ်ထားသောလူတန်းစားသတ်မှတ်ထားရှိမရှိဆုံးဖြတ်သည်。
 * - interface_exists(string $interfaceName, bool $autoload = true): သတ်မှတ်ထားသော interface ကိုသတ်မှတ်ထားရှိမရှိဆုံးဖြတ်သည်。
 *
 * မှတ်သား:class_existsသာတရားသူကြီးအတန်းများ,interface_existsinterface ကိုသာတရားစီရင်လော့,တစ်ယောက်တည်းသုံးပါclass_existsအချို့သောအမျိုးအစားသည်အချို့သော interface ကိုအကောင်အထည်ဖော်ခြင်းရှိမရှိကိုတိုက်ရိုက်ဆုံးဖြတ်ရန်မဖြစ်နိုင်ပါ。
 *
 * နှစ်、အချို့သောအမျိုးအစားတစ်ခု interface ကိုအကောင်အထည်ဖော်မရှို့ဆုံးဖြတ်ပါ
 * PHPအတန်းတစ်ခု interface ကိုအကောင်အထည်ဖော်မလားဆုံးဖြတ်ရန်နည်းလမ်းများစွာရှိသည်:
 *
 * နည်းလမ်း1:အသုံးပြု class_implements()
 * class_implements($className) ဤအတန်းမှအကောင်အထည်ဖော်သည့် interface အမည်ရှိ array အားလုံးကိုပြန်သွားပါလိမ့်မည်。
 */</span>

</span><span><span class="hljs-class"><span class="hljs-keyword">interface</span></span></span><span> </span><span><span class="hljs-title">LoggerInterface</span></span><span> {
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">log</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$message</span></span><span>);
}

</span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">FileLogger</span></span><span> </span><span><span class="hljs-keyword">implements</span></span><span> </span><span><span class="hljs-title">LoggerInterface</span></span><span> {
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">log</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$message</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဖိုင်ကိုမှတ်တမ်းတင်ပါ: <span class="hljs-subst">$message</span></span></span><span>";
    }
}

</span><span><span class="hljs-variable">$className</span></span><span> = </span><span><span class="hljs-string">'FileLogger'</span></span><span>;
</span><span><span class="hljs-variable">$interfaceName</span></span><span> = </span><span><span class="hljs-string">'LoggerInterface'</span></span><span>;

</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-variable">$className</span></span><span>) &amp;&amp; </span><span><span class="hljs-title function_ invoke__">interface_exists</span></span><span>(</span><span><span class="hljs-variable">$interfaceName</span></span><span>)) {
    </span><span><span class="hljs-variable">$interfaces</span></span><span> = </span><span><span class="hljs-title function_ invoke__">class_implements</span></span><span>(</span><span><span class="hljs-variable">$className</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-variable">$interfaceName</span></span><span>, </span><span><span class="hljs-variable">$interfaces</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$className</span></span></span><span> အကောင်အထည်ဖော်မှု interface ကို </span><span><span class="hljs-subst">$interfaceName</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">"<span class="hljs-subst">$className</span></span></span><span> interface ကိုအကောင်အထည်ဖော်မရ </span><span><span class="hljs-subst">$interfaceName</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">"类或接口不存တည်နေ"</span></span><span>;
}

<span class="hljs-comment">/**
 * နည်းလမ်း2:အသုံးပြု instanceof
 * 也可以သွား实例化对象并အသုံးပြု instanceof ရဲ့:
 */</span>

</span><span><span class="hljs-variable">$logger</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">FileLogger</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (</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-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;br&gt;သွား instanceof တရားစီရင်ချက်,ဒီအရာဝတ်ထုအကောင်အထည်ဖော်သည် LoggerInterface"</span></span><span>;
}

<span class="hljs-comment">/**
 * အကျဉ်းချုပ်:
 * 1. class_exists() 仅တရားစီရင်ချက်类是否存တည်နေ。
 * 2. interface_exists() တရားစီရင်ချက်接口是否存တည်နေ。
 * 3. တရားစီရင်ချက်某类是否实现接口时,အသုံးပြုနိုင် class_implements() interface ခင်းကျင်းသို့ပြန်သွားပါ,နောက်တဖန်အသုံးပြုပါ in_array() တရားစီရင်ချက်。
 * 4. 对对象实例也可အသုံးပြု instanceof တရားစီရင်ချက်。
 *
 * ထိုမှျ,我们就可以安全地တည်နေ运行时တရားစီရင်ချက်某个接口是否已被某类实现,避免出现调用未实现နည်းလမ်း的错误。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 尾部နှင့်正文无关的内容</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဤဆောင်းပါးကိုဖတ်ရှုခြင်းအတွက်ကျေးဇူးတင်ပါသည်PHPသင်သင်ခန်းရာ!&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-variable">$footer_note</span></span><span> = </span><span><span class="hljs-string">"ငါဒီနေ့လေ့လာခဲ့တယ် class_exists、interface_exists လည်းပဲ class_implements 的အသုံးပြုနည်းလမ်း。"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$footer_note</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>