လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Phpunit စာမေးပွဲတွင်စဉ်ဆက်မပြတ်လျှပ်တစ်ပြက်နှိုင်းယှဉ်မှုအတွက် Get_Defined_concants ကိုမည်သို့အသုံးပြုရမည်နည်း။

Phpunit စာမေးပွဲတွင်စဉ်ဆက်မပြတ်လျှပ်တစ်ပြက်နှိုင်းယှဉ်မှုအတွက် Get_Defined_concants ကိုမည်သို့အသုံးပြုရမည်နည်း။

M66 2025-06-11

PHP စီမံကိန်းများဖွံ့ဖြိုးတိုးတက်ရေးလုပ်ငန်းစဉ်များတွင်အထူးသဖြင့်ဖွဲ့စည်းပုံအခြေခံဥပဒေအရလည်ပတ်မှုအရေအတွက်များပြားလာသည့်အခါ Code Execution စဉ်အတွင်းစဉ်ဆက်မပြတ်တန်ဖိုးထားမှုကိုမတော်တဆပြုပြင်မွမ်းမံခြင်းမှာအလွန်အရေးကြီးသောအပိုင်းဖြစ်သည်။ ယူနစ်စမ်းသပ်ခြင်းအတွက် PHPunit ကိုအသုံးပြုသောအခါ function output ရလဒ်များသို့မဟုတ်အတန်းအပြုအမူကိုအခိုင်အမာပြောဆိုရန်အလေ့အကျင့်ဖြစ်သော်လည်းအဆက်မပြတ်ပြောင်းလဲမှုများပြုလုပ်ရန်အလွယ်တကူမလုံလောက်ပါ။

PHPP ၏ Built_Defined_contscants "ကို အသုံးပြု. Phpunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ရန် PHPunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ရန် PHPPUNIT နှင့်နှိုင်းယှဉ်နိုင်သည်။

Get_Defined_Comants ဆိုတာဘာလဲ။

Get_Defined_constants သည် PHP မှလက်ရှိသတ်မှတ်ထားသောသတ်မှတ်ထားသောအမြဲတမ်းပြန်လည်ပေးပို့ရန် PHP မှပေးသော function တစ်ခုဖြစ်သည်။ ၎င်းသည် Boolean Parameter ကိုလက်ခံနိုင်ပြီး မှန်ကန် ပါက၎င်းသည်အမျိုးအစားအလိုက်အုပ်စုလိုက်သမဝါယမများ၏ခင်းကျင်းမှုကိုပြန်လည်ရရှိစေသည်။

နမူနာကုဒ်:

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

၎င်းသည်လက်ရှိအသုံးပြုသူအားပိုမိုလွယ်ကူသည့်နောက်ဆက်တွဲနှိုင်းယှဉ်မှုများအတွက်သတ်မှတ်ထားသော contains များကိုသတ်မှတ်ထားသည့်စဉ်ဆက်မပြတ်လျှပ်တစ်ပြက်များအားလုံးရရှိရန်ခွင့်ပြုသည်။

အဘယ်ကြောင့်သင် Constitants ကို snapshot နှင့်နှိုင်းယှဉ်ဖို့လိုအပ်သလဲ?

ယူနစ်စစ်ဆေးမှုများတွင် code တစ်ခု၏အပိုင်းအစတစ်ခုသည်စဉ်ဆက်မပြတ်ပြုပြင်မွမ်းမံပါကပုံမှန်မဟုတ်သောစနစ်အပြုအမူကိုဖြစ်ပေါ်စေနိုင်သည်။ သို့သော်သတ်မှတ်ထားသည့်အတိုင်းအမြဲတမ်းသတ်မှတ်ထားသည့်သို့မဟုတ်ပြုပြင်မွမ်းမံခြင်းမပြုနိုင်ပါ, ထို့ကြောင့်ဤ "ပြုပြင်မွမ်းမံခြင်း" သည်များသောအားဖြင့်တူညီသောအမည်နှင့်တူညီသောအမည်များနှင့်အဆက်မပြတ်ပြန်လည်အဓိပ္ပာယ်ဖွင့်ဆိုသကဲ့သို့သဘာဝပတ်ဝန်းကျင်အပြောင်းအလဲများကြောင့်မျှော်လင့်ထားသည့်စဉ်ဆက်မပြတ်ပျောက်ဆုံးနေသည်။

စမ်းသပ်မှုမတိုင်မီနှင့်အပြီးတွင်စဉ်ဆက်မပြတ်လျှပ်တစ်ပြက်များကိုနှိုင်းယှဉ်ခြင်းအားဖြင့်သင်သည်ပရိုဂရမ်၏တည်ငြိမ်မှုကိုသေချာစေရန်မမျှော်လင့်ဘဲထည့်သွင်းထားသော,

အကောင်အထည်ဖော်မှုစိတ်ကူးများ

  1. Snapshots ရိုက်ကူးခြင်း စမ်းသပ်မှုအမှုမပြုမီ Call_Defines_constants (Trust) ['user' ['user) [' user '] ကို ဖုန်းဆက်ပါ။

  2. Code ကို execute လုပ်ပါ စမ်းသပ်ရန်လိုအပ်သည့်ကုဒ်ဆိုင်ရာယုတ္တိဗေဒကို Execute လုပ်ပါ,

  3. နောက်တဖန်လျှပ်တစ်ပြက်ရိုက်ကူးပါ လက်ရှိစဉ်ဆက်မပြတ်အခြေအနေရရှိရန် Get_Defined_constants (Trust user '] ကို ပြန်လည်ခေါ်ဆိုပါ။

  4. နှိုင်းယှဉ်လျှပ်ကူး ဖမ်းယူ Snapshots နှစ်ခုကိုအသစ်ရှာဖွေရန်, သို့မဟုတ်ကွဲပြားခြားနားသောတန်ဖိုးများကိုရှာဖွေရန်နှိုင်းယှဉ်ပါ။

  5. အခိုင်အမာအတည်ပြုချက် <br> <br> မျှော်လင့်ထားသည့်အတိုင်း Phpunit အခိုင်အမာကိုအမြဲတမ်းမမျှော်လင့်ဘဲပြောင်းလဲခြင်းမရှိသေးကြောင်းသေချာစေရန်အသုံးပြုပါ။

သတ်သတ်မှတ်မှတ်ဥပမာကုဒ်

Phpunit ကို Conapshot နှိုင်းယှဉ်မှုအတွက် Phpunit ကိုအသုံးပြုခြင်းဥပမာဖြစ်သည်။

 use PHPUnit\Framework\TestCase;

class ConstantSnapshotTest extends TestCase
{
    private array $initialConstants;

    protected function setUp(): void
    {
        // ကန ဦး စဉ်ဆက်မပြတ်လျှပ်တစ်ပြက်ရိုက်ကူးပါ
        $this->initialConstants = get_defined_constants(true)['user'] ?? [];
    }

    public function testConstantSnapshot()
    {
        // ဤသည်စမ်းသပ်မှုကုဒ်ပိတ်ပင်တားဆီးမှုဖြစ်ပါတယ်ယူဆ,ကိန်းဂဏန်းများကိုသတ်မှတ်သို့မဟုတ်ပြုပြင်မွမ်းမံရန်ဖြစ်နိုင်သည်
        if (!defined('MY_CONST')) {
            define('MY_CONST', 'initial_value');
        }

        // စဉ်ဆက်မပြတ်လျှပ်တစ်ပြက်ရိုက်ကူးပါ
        $currentConstants = get_defined_constants(true)['user'] ?? [];

        // နှစ်ခုလျှပ်တစ်ပြက်နှိုင်းယှဉ်,အပြောင်းအလဲများကိုရှာပါ
        $added = array_diff_key($currentConstants, $this->initialConstants);
        $removed = array_diff_key($this->initialConstants, $currentConstants);
        $modified = [];

        foreach ($currentConstants as $key => $value) {
            if (isset($this->initialConstants[$key]) && $this->initialConstants[$key] !== $value) {
                $modified[$key] = [
                    'old' => $this->initialConstants[$key],
                    'new' => $value,
                ];
            }
        }

        // output ကို debug သတင်းအချက်အလက်(အမှန်တကယ်စမ်းသပ်ခြင်းကာလအတွင်းသင်မှတ်ချက်ပေးနိုင်သည်သို့မဟုတ်မှတ်တမ်းများလုပ်နိုင်သည်)
        print_r([
            'added' => $added,
            'removed' => $removed,
            'modified' => $modified,
        ]);

        // အဘယ်သူမျှမအသစ်သို့မဟုတ်ဖျက်ပစ်သတ်ထားတဲ့ကိန်းစုရှိပါတယ်ဟုအခိုင်အမာ
        $this->assertEmpty($added, 'အဘယ်သူမျှမအသစ်စက်စက်အသစ်ရှိသင့်ပါတယ်');
        $this->assertEmpty($removed, 'အဘယ်သူမျှမပယ်ဖျက်ခဲ့တဲ့ကိန်းစုရှိသင့်ပါတယ်');

        // အဆိုပါစဉ်ဆက်မပြတ်တန်ဖိုးကိုပြုပြင်မထားဘူးဟုအခိုင်အမာ
        $this->assertEmpty($modified, 'ပြုပြင်မရှိသေးတဲ့ကိန်းရှင်တွေမရှိဘူး');
    }
}

မှတ်သားရန်အရာ

  • Constants ကို redefined မရနိုင်ပါ
    PHP သည်၎င်းတို့အားအထူးနည်းလမ်းများနှင့်မတူပါကတူညီသောအဓိပ္ပာယ်ဖွင့်ဆိုချက်ကိုတူညီသောအဓိပ္ပာယ်ဖွင့်ဆိုချက်ကိုထပ်ခါတလဲလဲဖော်ပြရန်ခွင့်မပြုပါ။ ဒီကန့်သတ်ချက်ကိုစမ်းသပ်စဉ်အတွင်းထည့်သွင်းစဉ်းစားခြင်းသို့ယူဆောင်သင့်သည်။

  • သဘာဝပတ်ဝန်းကျင်မူကြမ်း <br> <br> အချို့သောလည်ပတ်မှုအချို့ကိုစစ်ဆေးခြင်းသည်စစ်ဆေးခြင်းမပြုမီနှင့်အပြီးမတူညီသောပတ်ဝန်းကျင်မှအလိုအလျောက်သတ်မှတ်သည်။ အသုံးပြုသူသတ်မှတ်ထားသောစဉ်ဆက်မပြတ်အစိတ်အပိုင်းများကိုသာနှိုင်းယှဉ်ရန်အကြံပြုသည်။

  • စွမ်းဆောင်ရည်သက်ရောက်မှု <br> မကြာခဏဆိုသလိုအရေအတွက်အမြောက်အမြား၏လျှပ်တစ်ပြက်များနှင့်နှိုင်းယှဉ်လျှင်အနည်းငယ်စွမ်းဆောင်ရည်သက်ရောက်မှုရှိနိုင်သည်။ သို့သော်ယေဘုယျအားဖြင့်လက်ခံနိုင်ဖွယ်ရှိသည်။

အမှန်တကယ်စီမံကိန်းများနှင့်ပေါင်းစပ်

သင်၏စီမံကိန်းသည်ရှုပ်ထွေးသောဖွဲ့စည်းမှုများပါ 0 င်ပါက,

ဥပမာအားဖြင့်ပေါင်းစည်းရေးစစ်ဆေးမှုတွင် Configuration Constants အားလုံးသည်မျှော်လင့်ချက်များနှင့်ကိုက်ညီပြီးအွန်လိုင်းတွင် configuration Mismatch ကိုရှောင်ရှားရန်သေချာစေပါ။

အကျဉ်းချုပ်

Get_Defined_constants function မှတစ်ဆင့် Phpunit နှင့်ပေါင်းစပ်ပြီးစဉ်ဆက်မပြတ်လျှပ်တစ်ပြက်နှိုင်းယှဉ်မှုများကိုအလွယ်တကူအကောင်အထည်ဖော်နိုင်ရန်အလွယ်တကူအကောင်အထည်ဖော်နိုင်သည်။ ဤနည်းလမ်းသည်ရိုးရှင်းလွယ်ကူပြီးအသုံးပြုရန်လွယ်ကူပြီးအဆက်မပြတ်ထိခိုက်လွယ်သော PHP စီမံကိန်းများကိုအလိုအလျောက်စစ်ဆေးခြင်းအတွက်သင့်တော်သည်။

အကယ်. သင့်တွင်စဉ်ဆက်မပြတ်စီမံခန့်ခွဲမှုနှင့်စမ်းသပ်ခြင်းအတွက်ပိုမိုနက်ရှိုင်းသောတောင်းဆိုမှုများရှိပါက Code အရည်အသွေးနှင့်စီမံကိန်းယုံကြည်စိတ်ချရမှုကိုတိုးတက်စေရန် logs နှင့်ခြွင်းချက်ကိုင်တွယ်မှုကိုပေါင်းစပ်နိုင်သည်။