PHP စီမံကိန်းဖွံ့ဖြိုးတိုးတက်မှုတွင် configuration files များကိုစီမံခန့်ခွဲရန်အတွက်ရွေးချယ်စရာများစွာရှိသည်။ .env ဖိုင်များသည်လက်ရှိပင်မပင်ခေတ်ရှု 0 င်မူဘောင်များ (ဥပမာ - Laravel ကဲ့သို့) အသုံးပြုသောနည်းလမ်းများအနက်မှတစ်ခုဖြစ်သည်။ သူတို့ကပြောင်းလွယ်ပြင်လွယ် configuration နှင့်သဘာဝပတ်ဝန်းကျင် variable တွေကို၏တက်ကြွစွာဖတ်ရှုခြင်းများကိုထောကျပံ့။ သို့သော်အချို့သော developer အချို့က PHP Consters ( Define Define ) အစား .env ဖိုင်များအစားအသုံးပြုနိုင်ပါသလား။ ဤဆောင်းပါးသည်စွမ်းဆောင်ရည်, လုံခြုံရေး, ပြောင်းလွယ်ပြင်လွယ်စသဖြင့်နှစ်ခု၏အားသာချက်များနှင့်အားနည်းချက်များကိုခွဲခြမ်းစိတ်ဖြာရန် Get_Defined_Constants function ကိုအသုံးပြုလိမ့်မည်။
.env ဖိုင်များကိုများသောအားဖြင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုသတင်းအချက်အလက်, API keys များစသည်တို့ကဲ့သို့သောပတ် 0 န်းကျင်နှင့်ဆိုင်သောဆက်စပ်သောဖွဲ့စည်းပုံများကိုသိမ်းဆည်းရန်အသုံးပြုလေ့ရှိသည်။
APP_ENV=production
DB_HOST=127.0.0.1
DB_PORT=3306
PHP ရှိ Constants ကိုသတ်မှတ်ရန်နည်းလမ်းမှာ -
define('APP_ENV', 'production');
define('DB_HOST', '127.0.0.1');
define('DB_PORT', 3306);
Get_Defines_constants မှတဆင့်စိတ်ကြိုက်တပ်သားများအပါအ 0 င ်သတ်မှတ်ထားသောကိန်းဂဏန်းများအားလုံးကိုကျွန်ုပ်တို့ရနိုင်သည်။
$constants = get_defined_constants(true);
print_r($constants['user']);
Execution ထိရောက်မှုရှိသည့်ရှုထောင့်မှကြည့်ရှုခြင်းမှ PHP Constitian ကိုစုစည်းခြင်းအဆင့်တွင်လုပ်ဆောင်ပြီးခွဲခြမ်းစိတ်ဖြာခြင်းထက်ပိုမိုမြန်ဆန်စွာဖတ်ပါ ။
define('START', microtime(true));
define('CONFIG_VALUE', 'example');
for ($i = 0; $i < 100000; $i++) {
$x = CONFIG_VALUE;
}
echo 'Time: ' . (microtime(true) - START);
ဆန့်ကျင်ဘက် -
define('START', microtime(true));
putenv('CONFIG_VALUE=example');
for ($i = 0; $i < 100000; $i++) {
$x = getenv('CONFIG_VALUE');
}
echo 'Time: ' . (microtime(true) - START);
အမှန်တကယ်တိုင်းတာခြင်းတွင်စဉ်ဆက်မပြတ်စာဖတ်ခြင်းသည်သိသိသာသာပိုမိုမြန်ဆန်သည်။
.env ၏အားသာချက်သည်၎င်း၏အမျိုးမျိုးပြောင်းလဲခြင်းဖြစ်သည်။ ကွဲပြားခြားနားသော .env ဖိုင်များကို code မပြောင်းလဲဘဲကွဲပြားခြားနားသောဖြန့်ကျက်သောပတ်ဝန်းကျင်များမှတဆင့်သတ်မှတ်နိုင်သည်။
ဆန့်ကျင်ဘက်အနေဖြင့်ကိန်းဂဏန်းများကိုသတ်မှတ်ထားသောတစ်ကြိမ်သာသတ်မှတ်ထားသော (script ကိုပြန်လည်ဖွင့်လှစ်ခြင်းမရှိပါက) မအောင်မြင်ပါကပြုပြင်မွမ်းမံခြင်းမပြုလုပ်နိုင်ပါ။
ဥပမာအားဖြင့် Https://m66.net/api/ တွင်တပ်ဆင်ထားသော 0 န်ဆောင်မှုတစ်ခုမှာ 0 န်ဆောင်မှုပေးရန်လိပ်စာများကိုမတူညီသောပတ်ဝန်းကျင်တွင် configure လုပ်ရန်လိုအပ်သည်။ .env ဖိုင်ကိုဒီလိုလုပ်ဖို့အရမ်းအဆင်ပြေနိုင်ပါတယ်:
API_URL=https://m66.net/api/
အကယ်. သင်သည်ကိန်းရှင်များကိုအသုံးပြုနေပါကလိပ်စာကိုပြောင်းလဲတိုင်းသင်ကုဒ်ကိုပြန်လည်နေရာချထားရန်သို့မဟုတ်ပြောင်းလဲရန်လိုအပ်သည်။
define('API_URL', 'https://m66.net/api/');
.env ဖိုင်များကိုဝက်ဘ်ဆာဗာမှတစ်ဆင့်အပြင်ဘက်နှင့်မထိတွေ့သင့်ပါ။ စနစ်တကျ configure လျှင်သူတို့၏ contents များကိုအပြင်ဘက်သို့မမြင်နိုင်ပါ။ သို့သော် configuration မသင့်လျော်ပါကယိုစိမ့်မှုအန္တရာယ်ရှိနိုင်သည်။
PHP စက်ရုံများသည်ကုဒ်၏အစိတ်အပိုင်းများဖြစ်ပြီး Runtime တွင်သာတည်ရှိပြီးအသုံးပြုသူများမှတိုက်ရိုက် ဝင်ရောက်. မရပါ။ ကုဒ်ကိုယ်နှိုက်နှင့်သက်ဆိုင်သည်နှင့်အမျှကိန်းဂဏန်းများသည်ပိုမိုလုံခြုံမှုရှိသည်။
Debugging အတွက်ပြီးပြည့်စုံသောအသုံးပြုသူသတ်မှတ်ထားသောကိန်းစုများကိုအလွယ်တကူကြည့်ရှုရန် Get_Defined_constants ('user'] ကိုသုံးပါ။
echo "<pre>";
print_r(get_defined_constants(true)['user']);
echo "</pre>";
သို့သော် .env ၏အကြောင်းအရာသည်ခြေရာခံရန်မလွယ်ကူပါ။ အပိုဆောင်းကိရိယာများသို့မဟုတ် encapsulation များမှတစ်ဆင့်ဖတ်ရန်လိုအပ်သည်။
အတိုင်းအတာ | .env ဖိုင် | စဉ်ဆက်မပြတ် ( သတ်မှတ် ) |
---|---|---|
ပြပဲှ | အလယ်အလတ် (IO-မှီခို) | မြင့်မားသော (စုစည်းနေစဉ်အတွင်းတင်) |
ပြောင်းလွယ်ပြင်လွယ် | မြင့်မားသော (ပတ် 0 န်းကျင်မျိုးစုံအတွက်သင့်လျော်သော) | အနိမ့် (static မပြောင်းလဲနိုင်သော) |
လုံခွုံရေး | ဆာဗာ configuration အပေါ်မှီခို | အတော်လေးပိုမိုလုံခြုံ |
အဆင်ပြေ debugging | အထွေထွေ (မူဘောင်နှင့်ပူးပေါင်းရန်လိုအပ်သည်) | ခိုင်ခံ့သော (get_defined_constants) |
Constants ကိုအစားထိုးရန်ဖြစ်စေ .env ဖိုင်များသည်စီမံကိန်းလိုအပ်ချက်များပေါ်တွင်မူတည်သည်။
အကယ်. စီမံကိန်းတည်ဆောက်ပုံသည်ရိုးရှင်းပြီးဖြန့်ကျက်မှုပတ်ဝန်းကျင်ကိုသတ်မှတ်ထားပါကအမြဲတမ်းစွမ်းဆောင်ရည်နှင့်လုံခြုံရေးကိုရရှိနိုင်သည်။
အကယ်. စီမံကိန်းတွင်ပတ် 0 န်းကျင်ဆိုင်ရာဖြန့်ကျက်မှုနှင့်တက်ကြွစွာပြုပြင်ပြောင်းလဲမှုနှင့်ပြောင်းလဲနေသော configuration loading ပါ 0 င်ပါက .env ဖိုင်သည်ပိုမိုသင့်တင့်သောရွေးချယ်မှုတစ်ခုဖြစ်နေဆဲပင်။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်နှစ်ခုကိုပေါင်းစပ်ရန်အကြံပြုထားပါသည်။ code တွင် code တွင် corie ည့်သည်များတွင် corie configurations အနည်းငယ်ကိုအများအားဖြင့်စုဆောင်းရန်နှင့်အထိခိုက်မခံသော configurations နှစ်ခုကို count လုပ်ပါ ။