လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> get_defined_concastants function မှတဆင့် namespace အောက်မှာ connespace အောက်မှာ constily ဘယ်လိုနေရမလဲ? လက်တွေ့ကျတဲ့နည်းစနစ်များနှင့်ပြောင်ပြောင်ပြောင်ပြောင်ပြောင်တင်းတင်း

get_defined_concastants function မှတဆင့် namespace အောက်မှာ connespace အောက်မှာ constily ဘယ်လိုနေရမလဲ? လက်တွေ့ကျတဲ့နည်းစနစ်များနှင့်ပြောင်ပြောင်ပြောင်ပြောင်ပြောင်တင်းတင်း

M66 2025-06-27

PHP Development တွင် PHP Development တွင် Parameters, status တန်ဖိုးများနှင့်ပရိုဂရမ်ကွပ်မျက်စဉ်အတွင်းပြောင်းလဲရန်မရည်ရွယ်သည့်အခြားအချက်အလက်များကို configure လုပ်လေ့ရှိသည်။ PHP 5.3 မှ 5.3 ကတည်းကအမည်စာရင်းများကိုမိတ်ဆက်ပေးခြင်းသည် Code အဖွဲ့အစည်းနှင့် Modular စွမ်းရည်ကိုများစွာတိုးတက်စေခဲ့သည်။ သို့သော်လက်တွေ့ကျသောပြ problem နာတစ်ခုအရဤအချက်များလည်းအောက်ပါအတိုင်းဖြစ်သည် - သတ်သတ်မှတ်မှတ် namespace တစ်ခုတွင်ဖော်ပြထားသည့်အတိုင်း PHP ကိုယ်တိုင်က PHP ကိုယ်တိုင်က PHP ကိုယ်တိုင်က php ကိုယ်နှိုက်ကို namespace များအတွက် filtering filtering forcting ကိုတိုက်ရိုက်မပေးပါဘူး။ ယခုအချိန်တွင် Get_Defined_constants () သည် နက်ရှိုင်းသောသုတေသနနှင့်ထိုက်တန်သောကိရိယာတစ်ခုဖြစ်လာသည်။

1 ။ get_defined_constants ၏အခြေခံအသုံးပြုမှု

Get_Defined_constants () function သည် function ကိုလက်ရှိ script တွင်သတ်မှတ်ထားသောကိန်းဂဏန်းများအားလုံးပါ 0 င်သည့်အပေါင်းအသင်းဆိုင်ရာခင်းကျင်းမှုကိုပြန်ပို့သည်။ Boolean စစ်မှန်တဲ့ parameter သည်ဖြတ်သန်းခြင်းအားဖြင့်သင်သည် (အသုံးပြုသူသတ်မှတ်ထားသောမဲရုံအပါအ 0 င်) ခွဲခြားခြင်းဖြင့်စုစည်းနိုင်သည်။

 $constants = get_defined_constants(true);
print_r($constants['user']); // အားလုံးအသုံးပြုသူသတ်မှတ်ထားသောကိန်းစုကိုရယူပါ

၎င်းသည် Php Core Continnants နှင့်အခြားမှအခြားဆီလျော်သောအကြောင်းအရာများကိုစစ်ထုတ်ရန်အစပိုင်းတွင်ကူညီနိုင်သည်။ သို့သော် namespace အားဖြင့်ဖြိုဖျက်ရန်မလုံလောက်ပါ။

2 ။ Namespace Constants ၏ဝိသေသလက္ခဏာများအမည်

Namespaces တွင်သတ်မှတ်ထားသော namespace တွင်ဖော်ပြထားသောစဉ်ဆက်မပြတ်သည် PHP တွင်ကမ္ဘာလုံးဆိုင်ရာအစဉ်အမြဲတည်ရှိပြီး၎င်းတို့၏ namespace ရှေ့ဆက်များပါ 0 င်သည်။ ဥပမာအားဖြင့်:

 namespace App\Config;
const TIMEOUT = 30;

Get_Defined_constants အတွက်ပြန်လာရလဒ်တွင်ဤစဉ်ဆက်မပြတ်၏အဓိကအမည်မှာ app \ config \ timeout ဖြစ်လိမ့်မည်။ ထို့ကြောင့်ကျွန်ုပ်တို့သည်ပုံမှန်ပွဲစဉ်သို့မဟုတ်ရှေ့ဆက်ရှေ့ဆက်တရားစီရင်ခြင်းအားဖြင့်ပြန်လာရလဒ်မှကျွန်ုပ်တို့စိတ်ဝင်စားသော Continants များကိုစစ်ထုတ်နိုင်သည်။

3 ။ သတ်သတ်မှတ်မှတ် namespace များအတွက် filter ကို filter

ဤတွင်အသုံးပြုသူသတ်မှတ်ထားသောမဲဆန္ဒနယ်များမှသီးခြားမဟုတ်သော namespace တစ်ခု၏အစိတ်အပိုင်းများကိုထုတ်လွှတ်သည့်ရိုးရှင်းသော function တစ်ခုမှာ -

 function get_namespace_constants(string $namespace): array {
    $allConstants = get_defined_constants(true);
    $userConstants = $allConstants['user'] ?? [];

    $namespacePrefix = trim($namespace, '\\') . '\\';
    $filteredConstants = [];

    foreach ($userConstants as $name => $value) {
        if (strpos($name, $namespacePrefix) === 0) {
            $filteredConstants[$name] = $value;
        }
    }

    return $filteredConstants;
}

ခေါ်ဆိုမှုဥပမာ -

 print_r(get_namespace_constants('App\\Config'));

ဤလုပ်ဆောင်ချက်သည်အောက်ပါဖွဲ့စည်းပုံနှင့်ဆင်တူသည်။

 Array
(
    [App\Config\TIMEOUT] => 30
    [App\Config\RETRIES] => 5
)

4 ။ သတိပြုရန်နှင့်ပြောင်ပြောင်ပြောင်ပြောင်တင်းတင်း

  1. ကော်မတီပထမ ဦး ဆုံးသတ်မှတ်ရမည်ဖြစ်သည်
    Get_Defined_constants () ဖုန်းခေါ်ဆိုခြင်းမပြုမီသတ်မှတ်ထားသောကိန်းဂဏန်းများကိုသာရနိုင်သည်။ ဆိုလိုသည်မှာသင်သည်သက်ဆိုင်ရာဖိုင် (သို့မဟုတ် namespace) ကိုသေချာအောင်လုပ်ရန်လိုသည်။

  2. အမည်သတ်မှတ်ချက်များ namespace မျိုးစုံအောက်တွင်အဆက်မပြတ်အမည်များထပ်တူမရှိမဖြစ်လိုအပ်သည်ဆိုပါကစစ်ထုတ်ခြင်းသည် (namespace အပါအ 0 င်) အမည်အပြည့်အစုံပေါ်တွင်မူတည်သည်။

  3. tool functions များသို့မဟုတ်လူတန်းစားနည်းလမ်းများအဖြစ် encapsulated နိုင်ပါသည် အကယ်. သင်သည် module (သို့) namespace အောက်ရှိ consinants များကိုမကြာခဏရယူရန်လိုအပ်ပါကအထက်ပါယုတ္တိဗေဒကို Code Reusability ကိုတိုးတက်စေရန်အထွေထွေ tool class သို့သင်ခန်းစာယူနိုင်သည်။

5 ။ လျှောက်လွှာကိုချဲ့ထွင်ခြင်း - configuration loading နှင့်အတူပေါင်းစပ်

အချို့သောမူဘောင်များသို့မဟုတ်ထုံးစံမူဘောင်များတွင် Constitals သို့မဟုတ် configuration ပစ္စည်းများအတွက်အခြားနည်းလမ်းများသို့မဟုတ်ဖြည့်စွက်ပစ္စည်းများအဖြစ်အသုံးပြုနိုင်သည်။ အလိုအလျောက် configuration ကိုမှတ်ပုံတင်ခြင်းမှတ်ပုံတင်ခြင်းကို Get_namespace_Comants နှင့်ပေါင်းစပ်။ အကောင်အထည်ဖော်နိုင်သည်။ ဥပမာအားဖြင့်:

 $config = get_namespace_constants('App\\Config');
file_put_contents('https://m66.net/log/config_snapshot.json', json_encode($config));

ဤနည်းအားဖြင့် configuration snapshots များကိုကယ်တင်ခြင်းနှင့်ပြုပြင်ထိန်းသိမ်းမှုသို့မဟုတ်ပြ esh နာဖြေရှင်းရန်အတွက်ဝေးလံခေါင်သီသောစနစ်များသို့ကယ်တင်ခြင်းသို့မဟုတ်ပေးပို့နိုင်သည်။

ကောက်ချက်

PHP သည် Namespace မှ Constants ကိုစာရင်းပြုစုသောဇာတိ function များကိုတိုက်ရိုက်မထောက်ပံ့သော်လည်း Namesfines_constants () ကို Namespace ရှေ့ဆက်စည်းမျဉ်းစည်းကမ်းများဖြင့်ဤလိုအပ်ချက်ကိုရရှိနိုင်ပါသည်။ ထိုကဲ့သို့သောကျွမ်းကျင်မှုများကိုကျွမ်းကျင်ခြင်းသည် Code အဖွဲ့အစည်း၏စွမ်းရည်ကိုတိုးတက်စေရုံသာမကမူဘောင်ဖွံ့ဖြိုးတိုးတက်မှုသို့မဟုတ်ကြီးမားသောစနစ်များတွင်အမှန်တကယ်တန်ဖိုးကိုအပြည့်အဝကစားသည်။