<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ဒီဆောင်းပါးနှင့် PHP ကုဒ်ဆီလျှော်,ဤတွင်ခွဲခြာမတိုင်မီသာဥပမာများဖြစ်ကြသည်。</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Hello World!"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-comment"># တည်နေ PHP ခြွင်းချက်ကြေညာချက်၌တည်၏,defined() လုပ်ဆောင်ချက်များ၏လက်တွေ့လျှောက်လွှာနည်းလမ်းများကဘာတွေလဲ?</span></span><span>
တည်နေ PHP ဖွံ့ဖြိုးမှုအောက်မှာ,`</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()` function တစ်ခု၏အဓိကလုပ်ဆောင်ချက်သည်စဉ်ဆက်မပြတ်သတ်မှတ်ထားခြင်းရှိမရှိရှာဖွေရန်ဖြစ်သည်。၎င်း၏ပြန်လာတန်ဖိုး boolean အမျိုးအစားဖြစ်ပါတယ်:若常量已存တည်နေ则返回 `</span><span><span class="hljs-literal">true</span></span><span>`,မဟုတ်ရင်ပြန်လာပါ `</span><span><span class="hljs-literal">false</span></span><span>`。ဒီဝိသေသကြောင့်,တည်နေခြွင်းချက်ကြေညာချက်၌တည်၏使用 `</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()` developer များထိန်းချုပ်မှုကုဒ်ယုတ္တိဗေဒကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်ကူညီနိုင်သည်,避免重复定义常量或တည်နေ未定义时使用常量导致အမှား。အောက်ပါတို့သည်၎င်း၏လျှောက်လွှာနည်းလမ်းကိုသရုပ်ဖော်ရန်ဘုံအခြေအနေများစွာပေါင်းစပ်သည်。
</span><span><span class="hljs-comment">## 1. ထပ်တလဲလဲ defining မှစဉ်ဆက်မပြတ်တားဆီး</span></span><span>
တည်နေ大型项目中,မတူညီသောဖိုင်များသည်တူညီသောကိန်းဂဏန်းများကိုသတ်မှတ်နိုင်သည်。သွား `</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()`,可以တည်နေ定义之前先检测常量是否已经存တည်နေ,ပေါ်လာခြင်းကိုရှောင်ကြဉ်ပါ PHP ၏“ကော်ပိုရေးရှင်းကိုသတ်မှတ်ကြသည်”အမှား。
```php
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'APP_ENV'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'APP_ENV'</span></span><span>, </span><span><span class="hljs-string">'production'</span></span><span>);
}
</span></span>ဤနည်းအားဖြင့် Code ကိုမည်မျှပင်ရည်ညွှန်းသည်ဖြစ်စေပ conflict ိပက်ခမရှိသေးပါ။
စီမံကိန်းအတော်များများတွင် debugging mode ကိုဖွင့်ရှိမရှိကိုထိန်းချုပ်ရန် Constants ကိုအသုံးပြုသည်။ သတ်မှတ်ထားသည့် () စည်းလုံးညီညွတ်မှုများ၌ () ခြွင်းချက်ဖော်ပြချက်များတွင်ယုတ္တိဗေဒသည်ပိုမိုအားကောင်းလာစေရန်သေချာစေနိုင်သည်။
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'DEBUG'</span></span><span>) && DEBUG === </span><span><span class="hljs-literal">true</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">error_reporting</span></span><span>(E_ALL);
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-title function_ invoke__">error_reporting</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>);
}
</span></span>အဆိုပါ debug စဉ်ဆက်မပြတ်မသတ်မှတ်ထားပါက debugging ယုတ္တိဗေဒကိုမထည့်သွင်းနိုင်ပါ။ default settings ကိုထိန်းသိမ်းထားလိမ့်မည်။
Configuration ဖိုင်ကိုဖွင့်သောအခါလိုအပ်သောစဉ်ဆက်မပြတ် () မှလွဲ. ပရိုဂရမ်ခြွင်းချက်များကိုရှောင်ရှားရန်သတ်မှတ်ထားသော () တည်ရှိခြင်းရှိမရှိကိုသင်အတည်ပြုနိုင်သည်။
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'DB_HOST'</span></span><span>) || !</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'DB_USER'</span></span><span>)) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'မပြည့်စုံ database configurationation,ကျေးဇူးပြု. configuration ဖိုင်ကိုစစ်ဆေးပါ。'</span></span><span>);
}
</span></span>အွန်လိုင်းပေါ်တွင်နေရာချထားရာတွင်ဤရှာဖွေတွေ့ရှိမှုအမျိုးအစားသည်အထူးအရေးကြီးသည်။
တခါတရံဖိုင်၏ထိပ်တွင်အမြဲတမ်းဝိသေသလက်ခဏာကိုသတ်မှတ်ပြီးဒီစဉ်ဆက်မပြတ်မိတ္တူပွားကိုရှောင်ရှားရန်အခြားဖိုင်များတွင်ဤစဉ်ဆက်မပြတ်ရှိ, ရှိမရှိရှာဖွေတွေ့ရှိသည်။
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'INIT_LOADED'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'INIT_LOADED'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// ကန ဦး ကုဒ်,ဥပမာ configuration ကိုတင်ခြင်း、အချိန်ဇုန်ကိုသတ်မှတ်ပါ။</span></span><span>
}
</span></span>ပတ် 0 န်းကျင်ဆိုင်ရာဖွံ့ဖြိုးတိုးတက်မှုတွင်ကွဲပြားခြားနားသောကိန်းဂဏန်းများကိုလည်ပတ်နေသောပတ် 0 န်းကျင်ကိုခွဲခြားရန်သတ်မှတ်နိုင်ပြီး ,
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'ENV_DEV'</span></span><span>)) {
</span><span><span class="hljs-variable">$db_host</span></span><span> = </span><span><span class="hljs-string">'localhost'</span></span><span>;
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'ENV_TEST'</span></span><span>)) {
</span><span><span class="hljs-variable">$db_host</span></span><span> = </span><span><span class="hljs-string">'test-db-server'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-variable">$db_host</span></span><span> = </span><span><span class="hljs-string">'prod-db-server'</span></span><span>;
}
</span></span>သတ်မှတ်ထားသည့်ဖော်ပြချက်များရှိ သတ်မှတ်ထားသော () function ၏အခန်းကဏ် role သည်အဓိကအားဖြင့်ထပ်ခါတလဲလဲအဓိပ္ပာယ်ဖွင့်ဆိုချက်ကိုတားဆီးရန်အဓိကအားဖြင့်ထင်ဟပ်သည်။ ၎င်းသည်အဆက်မပြတ်စီမံခန့်ခွဲမှု, ထိန်းချုပ်ခြင်းကိုထိန်းချုပ်ခြင်း, သတ်မှတ်ထားသော () ၏ဆင်ခြင်တုံတရား () ကိုဆင်ခြင်တုံတရားအသုံးပြုမှုသည် code ကိုပိုမိုခိုင်မာသည့်ပတ်ဝန်းကျင်တွင်ပိုမိုလွယ်ကူစေရန်နှင့်ရှုပ်ထွေးသောပတ်ဝန်းကျင်တွင်ထိန်းသိမ်းရန်ပိုမိုလွယ်ကူစေသည်။
<span></span>