အိုကေ, မင်းလိုချင်တာကိုနားလည်တယ် PHP ဆောင်းပါးတစ်ပုဒ်ရေးရန်ကျွန်ုပ်အားကူညီလိမ့်မည်။ ၎င်းသည်မသက်ဆိုင်သောအကြောင်းအရာများပါ 0 င်နိုင်သည့်အတွက်အဓိကစာသားသည်ခေါင်းစဉ်၏အကြောင်းအရာများကိုအပြည့်အဝရှင်းပြပြီးအလျားလိုက်လိုင်းများနှင့်ခွဲခြားလိမ့်မည်။ ဆောင်းပါးကတိုက်ရိုက်အဆုံးသတ်လိမ့်မယ်။ ဒီမှာဥပမာတစ်ခုပါ။
<span><span><span class="hljs-meta"><?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လေ့လာမှုမှတ်စုများ!<br>"</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><br>";
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?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>) && </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">"<br>သွား 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">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?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သင်သင်ခန်းရာ!<br>"</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">?></span></span><span>
</span></span>