လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ပတ် 0 န်းကျင် variable variable စဉ်ဆက်မပြတ်နှင့်အတူအသုံးပြုပါ

ပတ် 0 န်းကျင် variable variable စဉ်ဆက်မပြတ်နှင့်အတူအသုံးပြုပါ

M66 2025-05-18

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 နာများစွာရှိသည် -

  1. ကွဲပြားခြားနားသောပတ်ဝန်းကျင်တွင်ထိန်းသိမ်းရန်ခက်ခဲသည် - ဖွံ့ဖြိုးတိုးတက်မှု, စမ်းသပ်ခြင်းနှင့်ထုတ်လုပ်မှုပတ် 0 န်းကျင်များတွင်ကွဲပြားခြားနားသော configurations များလိုအပ်သည်။

  2. သတင်းအချက်အလက်ယိုစိမ့်မှုအန္တရာယ် - အထိခိုက်မခံနိုင်သောကိန်းရှင်များကို Code Base နှင့်ထိတွေ့သည်။

  3. ရှာဖွေခြင်းနှင့်ခြေရာခံခြင်းအတွက်အခက်အခဲ - အရပ်ရပ်သို့ကွဲပြားနေသောကိန်းပေသည်များသည်စည်းလုံးညီညွတ်စွာစီမံရန်ခက်ခဲသည်။

get_defined_constants အသုံးပြုခြင်း၏အားသာချက်များ ()

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 စာရွက်စာတမ်းများကိုထုတ်လုပ်ရန်အဆင်ပြေသည်။

Convantanize ပတ်ဝန်းကျင် variable တွေကို

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'));

Get_Defined_constants () ပတ်ဝန်းကျင်ကိန်းနှင့်အတူ () ကိုသုံးပါ

အထက်ပါနည်းလမ်းအားဖြင့်ပတ်ဝန်းကျင် 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 တည်ဆောက်ခြင်းသည်အလွန်လက်တွေ့ကျသည်။

အဆင့်မြင့်သိကောင်းစရာများ: အလိုအလျောက်အဆက်မပြတ် loader

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,