PPP စီမံကိန်းများတွင်အမြဲတမ်းစီမံခန့်ခွဲမှုသည်လျစ်လျူရှုမရနိုင်သောပြ an နာတစ်ခုဖြစ်သည်။ ခဲယဉ်းသော coded များလွန်းခြင်းသည်ထိန်းသိမ်းရန်ခက်ခဲရုံသာမကမတူညီသောပတ်ဝန်းကျင်များအကြား configurations များကိုပြောင်းလဲရန်လည်းအထောက်အကူမပြုပါ။ ဤဆောင်းပါးသည် PHP ၏ Get_Defined_contsidscants () ၏ထိန်းသိမ်းမှုနှင့်ပြင်ဆင်မှုကိုတိုးတက်စေရန်ပတ်ဝန်းကျင်ရှိ variable variable များသို့မဟုတ် ဆာဗာပတ် 0 န်းကျင် variable များကဲ့သို့) ပတ် 0 န်းကျင် variable နှစ်ခုသို့မဟုတ်ဆာဗာပတ်ဝန်းကျင် variable များကိုဖန်တီးနိုင်သည့် function ကိုမည်သို့တည်ဆောက်ရမည်ကိုလေ့လာပါလိမ့်မည်။
စီမံကိန်းဖွံ့ဖြိုးတိုးတက်မှုအတွင်းတွင်အမြဲတမ်းဒေတာဘေ့စ်ဆက်သွယ်မှုများ, encryption keys, path encificification စသည်များကို အသုံးပြု. Constants သည်ပုံမှန်နည်းလမ်းကိုပုံမှန်အားဖြင့် သတ်မှတ်ခြင်း () ကိန်းပ်ဖိုင်များသို့မဟုတ် 0 င်ငွေဖိုင်များအတွက်တိုက်ရိုက်အဓိပ္ပါယ်ဖွင့်ဆိုထားသည်။
define('API_URL', 'https://api.m66.net/v1/');
define('ENCRYPTION_KEY', 's3cr3t!');
define('APP_ENV', 'production');
ဤနည်းလမ်းဖြင့်ပြ problems နာများစွာရှိသည် -
ကွဲပြားခြားနားသောပတ်ဝန်းကျင်တွင်ထိန်းသိမ်းရန်ခက်ခဲသည် - ဖွံ့ဖြိုးတိုးတက်မှု, စမ်းသပ်ခြင်းနှင့်ထုတ်လုပ်မှုပတ် 0 န်းကျင်များတွင်ကွဲပြားခြားနားသော configurations များလိုအပ်သည်။
သတင်းအချက်အလက်ယိုစိမ့်မှုအန္တရာယ် - အထိခိုက်မခံနိုင်သောကိန်းရှင်များကို Code Base နှင့်ထိတွေ့သည်။
ရှာဖွေခြင်းနှင့်ခြေရာခံခြင်းအတွက်အခက်အခဲ - အရပ်ရပ်သို့ကွဲပြားနေသောကိန်းပေသည်များသည်စည်းလုံးညီညွတ်စွာစီမံရန်ခက်ခဲသည်။
PHP ၏ Get_Defined_constants () function ကို function ကိုလက်ရှိ script တွင်သတ်မှတ်ထားသောကိန်းဂဏန်းများ (System နှင့် User-defined) ကိုပြန်ပို့နိုင်သည်။ namespace များနှင့် တွဲဖက်. (ရှေ့ဆက်များဖြင့်) ဖြင့်အသုံးပြုသောစီမံကိန်းအဆင့်ကိန်းရှင်များကိုပြန်လည်ရယူရန်လွယ်ကူသည်။
$constants = get_defined_constants(true);
$userConstants = $constants['user'];
foreach ($userConstants as $name => $value) {
if (strpos($name, 'APP_') === 0) {
echo "$name = $value\n";
}
}
ဤသို့ပြုလုပ်ခြင်း၏အကျိုးကျေးဇူးများမှာ -
စဉ်ဆက်မပြတ်အမျိုးအစားကို loaded လုပ်နိုင်သည်, ဖြတ်သန်းပြီးတစ်ပုံစံတည်းကို deborged ။
ပုံတူ naming သို့မဟုတ် overwriting ရှောင်ကြဉ်ပါ။
Debug မှတ်တမ်းများရေးရန်အဆင်ပြေသည်, configuration စာရွက်စာတမ်းများကိုထုတ်လုပ်ရန်အဆင်ပြေသည်။
code source code တွင် hard-code အထိခိုက်မခံသောသတင်းအချက်အလက်များကိုရှောင်ရှားရန် Constants ကိုသတ်မှတ်ရန်ပတ်ဝန်းကျင် variable များကိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။ Vlucas / Phpdotenv စာကြည့်တိုက်ကို .env ဖိုင်များမှပတ် 0 န်းကျင် variable များကို load လုပ်ရန်အကြံပြုသည်။
.env ဖိုင်ဥပမာ:
APP_ENV=production
APP_DEBUG=false
API_URL=https://api.m66.net/v1/
ဤ variable များကို PHP startup script တွင် တင်. သူတို့ကိုကိန်းဂဏန်းများအနေနှင့်သတ်မှတ်ပါ။
require __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
define('APP_ENV', getenv('APP_ENV'));
define('APP_DEBUG', getenv('APP_DEBUG') === 'true');
define('API_URL', getenv('API_URL'));
အထက်ပါနည်းလမ်းအားဖြင့်ပတ်ဝန်းကျင် variable များကို php စဉ်ဆက်မပြတ်ပြောင်းလဲသွားသည်။ ထို့နောက်ကျွန်ုပ်တို့သည်ဤစဉ်ဆက်မပြတ်သတင်းအချက်အလက်များကိုပြန်လည်ရယူရန်, output သို့မဟုတ် cache ကိုရယူရန် Get_Defined_constants () ကို သုံးနိုင်သည်။
function getAppConstants(string $prefix = 'APP_'): array {
$all = get_defined_constants(true);
$user = $all['user'];
return array_filter($user, function($key) use ($prefix) {
return strpos($key, $prefix) === 0;
}, ARRAY_FILTER_USE_KEY);
}
Configuration ပြ issues နာများကို debugging လုပ်ခြင်း, ပတ် 0 န်းကျင်လျှပ်ချောက်များကိုထုတ်လုပ်ခြင်းနှင့်အလိုအလျောက်ဖြန့်ကျက်သော scripts တည်ဆောက်ခြင်းသည်အလွန်လက်တွေ့ကျသည်။
Code ကိုထပ်မံဖြိုဖျက်ရန်အလိုအလျောက်အဆက်မပြတ်တင်ဆောင်သည့်အတန်းကိုတည်ဆောက်နိုင်သည်။ ၎င်းသည် .env ဖိုင်တွင်တိကျသောရှေ့ဆက်တစ်ခုနှင့်သက်ဆိုင်သော variable များကိုဖတ်နိုင်သည်။
class ConstantLoader {
public static function loadFromEnv(string $prefix = 'APP_') {
foreach ($_ENV as $key => $value) {
if (strpos($key, $prefix) === 0) {
if (!defined($key)) {
define($key, $value);
}
}
}
}
}
// ဘယ်လိုသုံးရမလဲ
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
ConstantLoader::loadFromEnv();
ပတ် 0 န်းကျင်ဆိုင်ရာ variable တွေကိုကိန်းရှင်များအဖြစ်ပြောင်းခြင်းနှင့် Get_Defined_constants များ အသုံးပြုခြင်းအားဖြင့် PHP စီမံကိန်းများတွင်စဉ်ဆက်မပြတ်အသုံးပြုမှု၏ပြောင်းလွယ်ပြင်လွယ်ခြင်း, ထိန်းသိမ်းခြင်းနှင့်လုံခြုံရေးကိုအလွန်တိုးတက်စေနိုင်သည်။ ဤနည်းလမ်းသည်အထူးသဖြင့်အလတ်စားနှင့် PHP စီမံကိန်းများအတွက်မကြာခဏအသင်းပူးပေါင်းမှုဖွံ့ဖြိုးတိုးတက်မှုနှင့်မကြာခဏ CI / CD ဖြန့်ကျက်မှုပတ်ဝန်းကျင်ရှိ PHP စီမံကိန်းများအတွက်အထူးသဖြင့်သင့်လျော်သည်။ ဤနည်းပညာဖြင့်သင်၏စီမံကိန်းပြင်ဆင်မှုသည် debug လုပ်ရန်နှင့်ပြောင်းရွှေ့ရန် Modular,