<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ------------------- Pre-ရှိပြီးသားဆီလျှော်အကြောင်းအရာ -------------------</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဤရွေ့ကားဆောင်းပါး၏အကြောင်းအရာနှင့်မသက်ဆိုင်သောအချို့သောအရာတို့ကိုဖြစ်ကြသည် PHP ထုတ်လုပ်မှုဥပမာ。\n"</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>\n";
</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 class="hljs-comment">/**
* ဘဲှ့: PHP အလယ်ပိုင်း ob_get_contents() နှင့် ob_start() Multi-layer nesting ကိုဘယ်လိုသုံးရမလဲ?လက်တွေ့ကျွမ်းကျင်မှုခွဲခြမ်းစိတ်ဖြာခြင်း
*
* တည်နေ PHP အလယ်ပိုင်း,output ကိုကြားခံ(Output Buffering)ဒါဟာအလွန်အသုံးဝင်သောအင်္ဂါရပ်ဖြစ်ပါတယ်,它允许你တည်နေ脚本执行过程အလယ်ပိုင်း
* output အကြောင်းအရာကိုဖမ်းယူ,ချက်ချင်း browser ကိုချက်ချင်းပို့ပေးမယ့်အစား。`ob_start()` နှင့် `ob_get_contents()` 是output ကိုကြားခံ
* အလယ်ပိုင်း最常用的函数。ကွဲပြားခြားနားသောအစိတ်အပိုင်းများ၏ output ကိုထိန်းချုပ်ရန်သင် multi-layer အသိုက်ကြားခံလိုအပ်တဲ့အခါ,သူတို့ဘယ်လိုအလုပ်လုပ်ပုံကိုနားလည်ဖို့အထူးအရေးကြီးတယ်。
*
* 1. ob_start() ၏အခန်းကဏ်။
* --------------------
* `ob_start()` 启动一个新的output ကိုကြားခံ区。ပြီးနောက်အားလုံး outputs(ကဲ့သို့ echo、print)သူတို့ကဒီကြားခံမှဖမ်းယူပါလိမ့်မည်,
* အစား browser ကိုမှတိုက်ရိုက် outputtuting ၏。
*
* နမူနာ:
*/</span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဤသည်ပထမ ဦး ဆုံးအလွှာကြားခံ၏အကြောင်းအရာဖြစ်ပါတယ်。"</span></span><span>;
</span><span><span class="hljs-variable">$content1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// လက်ရှိကြားခံအကြောင်းအရာကိုရယူပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// output ကိုနှင့်ကြားခံအဆုံးသတ်</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\nရရှိသောပထမ ဦး ဆုံးကြားခံ၏ contents: <span class="hljs-subst">$content1</span></span></span><span>\n";
<span class="hljs-comment">/**
* 2. Multi-layer nested buffering
* ----------------
* Multi-layer အသိုက်လိုအပ်သည့်အခါ,မျိုးစုံအကြိမ်ပေါင်းများစွာခေါ်နိုင်ပါတယ် ob_start(),ခေါ်ဆိုမှုကိုခေါ်သည့်အခါတိုင်းကြားခံအသစ်တစ်ခုကိုဖန်တီးသည်,တစ် stack ဖွဲ့စည်းပုံဖွဲ့စည်း。
* သွား ob_get_contents() သင်လက်ရှိကြားခံ၏ contents ရနိုင်သည်,သွား ob_end_flush() သို့မဟုတ် ob_end_clean()
* လက်ရှိကြားခံအဆုံးသတ်နိုင်ပါတယ်。
*
* နမူနာ:
*/</span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// buffering ၏ပထမ ဦး ဆုံးအလွှာ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ပထမအဆင့်ကိုစတင်သည်\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_start</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">"ဒုတိယအလွှာအကြောင်းအရာ\n"</span></span><span>;
</span><span><span class="hljs-variable">$secondLayer</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// 获取ဒုတိယအလွှာအကြောင်းအရာ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>(); </span><span><span class="hljs-comment">// 清空ကြားခံ၏ဒုတိယအလွှာ(အဘယ်သူမျှမ output ကို)</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ပထမထပ်ဆင့်\n"</span></span><span>;
</span><span><span class="hljs-variable">$firstLayer</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// အကြောင်းအရာ၏ပထမ ဦး ဆုံးအလွှာကိုရယူပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// 输出buffering ၏ပထမ ဦး ဆုံးအလွှာ区内容</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\nComment ကိုဒုတိယအနေဖြင့်ဖမ်းမိ: <span class="hljs-subst">$secondLayer</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အကြောင်းအရာပထမ ဦး ဆုံးအလွှာတွင်ဖမ်းမိ: <span class="hljs-subst">$firstLayer</span></span></span><span>\n";
<span class="hljs-comment">/**
* 3. လက်တွေ့ကျသောအကြံပြုချက်များ
* ------------
* - output ကိုနှောင့်နှေး:သွား多层缓冲,သင်ပထမ ဦး ဆုံးအကြောင်းအရာ process နိုင်ပါတယ်,ပြုပြင်မွမ်းမံခြင်းနှင့် output ကို。
* - template rendering:တည်နေ渲染模板时,သင်ပထမ ဦး ဆုံး output ကို buffer နိုင်ပါတယ်,进行变量替换သို့မဟုတ်缓存后再输出。
* - သစ်ခုတ်:output အကြောင်းအရာကိုဖမ်းယူ到文件而不是直接输出。
*
* မှတ်သားရန်အရာ:
* - အချိန်တိုင်း ob_start() အားလုံးပူးပေါင်းဆောင်ရွက်ရမယ် ob_end_flush() သို့မဟုတ် ob_end_clean()。
* - အသိုက်အလွှာများလွန်းသည်မှတ်ဉာဏ် overhead ကိုတိုးပွားစေနိုင်သည်,အမှန်တကယ်လိုအပ်ချက်များအရအသုံးပြုရန်အကြံပြုသည်。
*
* 4. 综合နမူနာ
*/</span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"HTML စာမျက်နှာခေါင်းစီး\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>အကြောင်းအရာအကြောင်းအရာ</p>\n"</span></span><span>;
</span><span><span class="hljs-variable">$bodyContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>(); </span><span><span class="hljs-comment">// ရှင်းလင်းပေမယ့် output ကိုမဟုတ်ပါဘူး</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<header>ဉီးခေါင်း</header>\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$bodyContent</span></span><span>; </span><span><span class="hljs-comment">// 再次输出အကြောင်းအရာအကြောင်းအရာ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// အားလုံး output</span></span><span>
</span><span><span class="hljs-comment">// ------------------- စာသား၏အဆုံး -------------------</span></span><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">"文章结束နမူနာ:စာဖတ်ခြင်းအတွက်ကျေးဇူးတင်ပါတယ်!\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>