PHP စီမံကိန်းများဖွံ့ဖြိုးတိုးတက်ရေးလုပ်ငန်းစဉ်များတွင်အထူးသဖြင့်ဖွဲ့စည်းပုံအခြေခံဥပဒေအရလည်ပတ်မှုအရေအတွက်များပြားလာသည့်အခါ Code Execution စဉ်အတွင်းစဉ်ဆက်မပြတ်တန်ဖိုးထားမှုကိုမတော်တဆပြုပြင်မွမ်းမံခြင်းမှာအလွန်အရေးကြီးသောအပိုင်းဖြစ်သည်။ ယူနစ်စမ်းသပ်ခြင်းအတွက် PHPunit ကိုအသုံးပြုသောအခါ function output ရလဒ်များသို့မဟုတ်အတန်းအပြုအမူကိုအခိုင်အမာပြောဆိုရန်အလေ့အကျင့်ဖြစ်သော်လည်းအဆက်မပြတ်ပြောင်းလဲမှုများပြုလုပ်ရန်အလွယ်တကူမလုံလောက်ပါ။
PHPP ၏ Built_Defined_contscants "ကို အသုံးပြု. Phpunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ရန် PHPunit နှင့်ပေါင်းစပ်ပြီး Phpunit နှင့်ပေါင်းစပ်ရန် PHPPUNIT နှင့်နှိုင်းယှဉ်နိုင်သည်။
Get_Defined_constants သည် PHP မှလက်ရှိသတ်မှတ်ထားသောသတ်မှတ်ထားသောအမြဲတမ်းပြန်လည်ပေးပို့ရန် PHP မှပေးသော function တစ်ခုဖြစ်သည်။ ၎င်းသည် Boolean Parameter ကိုလက်ခံနိုင်ပြီး မှန်ကန် ပါက၎င်းသည်အမျိုးအစားအလိုက်အုပ်စုလိုက်သမဝါယမများ၏ခင်းကျင်းမှုကိုပြန်လည်ရရှိစေသည်။
နမူနာကုဒ်:
$constants = get_defined_constants(true);
print_r($constants['user']); // အသုံးပြုသူသတ်မှတ်ထားသောကိန်းစုကိုသာရယူပါ
၎င်းသည်လက်ရှိအသုံးပြုသူအားပိုမိုလွယ်ကူသည့်နောက်ဆက်တွဲနှိုင်းယှဉ်မှုများအတွက်သတ်မှတ်ထားသော contains များကိုသတ်မှတ်ထားသည့်စဉ်ဆက်မပြတ်လျှပ်တစ်ပြက်များအားလုံးရရှိရန်ခွင့်ပြုသည်။
ယူနစ်စစ်ဆေးမှုများတွင် code တစ်ခု၏အပိုင်းအစတစ်ခုသည်စဉ်ဆက်မပြတ်ပြုပြင်မွမ်းမံပါကပုံမှန်မဟုတ်သောစနစ်အပြုအမူကိုဖြစ်ပေါ်စေနိုင်သည်။ သို့သော်သတ်မှတ်ထားသည့်အတိုင်းအမြဲတမ်းသတ်မှတ်ထားသည့်သို့မဟုတ်ပြုပြင်မွမ်းမံခြင်းမပြုနိုင်ပါ, ထို့ကြောင့်ဤ "ပြုပြင်မွမ်းမံခြင်း" သည်များသောအားဖြင့်တူညီသောအမည်နှင့်တူညီသောအမည်များနှင့်အဆက်မပြတ်ပြန်လည်အဓိပ္ပာယ်ဖွင့်ဆိုသကဲ့သို့သဘာဝပတ်ဝန်းကျင်အပြောင်းအလဲများကြောင့်မျှော်လင့်ထားသည့်စဉ်ဆက်မပြတ်ပျောက်ဆုံးနေသည်။
စမ်းသပ်မှုမတိုင်မီနှင့်အပြီးတွင်စဉ်ဆက်မပြတ်လျှပ်တစ်ပြက်များကိုနှိုင်းယှဉ်ခြင်းအားဖြင့်သင်သည်ပရိုဂရမ်၏တည်ငြိမ်မှုကိုသေချာစေရန်မမျှော်လင့်ဘဲထည့်သွင်းထားသော,
Snapshots ရိုက်ကူးခြင်း စမ်းသပ်မှုအမှုမပြုမီ Call_Defines_constants (Trust) ['user' ['user) [' user '] ကို ဖုန်းဆက်ပါ။
Code ကို execute လုပ်ပါ စမ်းသပ်ရန်လိုအပ်သည့်ကုဒ်ဆိုင်ရာယုတ္တိဗေဒကို Execute လုပ်ပါ,
နောက်တဖန်လျှပ်တစ်ပြက်ရိုက်ကူးပါ လက်ရှိစဉ်ဆက်မပြတ်အခြေအနေရရှိရန် Get_Defined_constants (Trust user '] ကို ပြန်လည်ခေါ်ဆိုပါ။
နှိုင်းယှဉ်လျှပ်ကူး ဖမ်းယူ Snapshots နှစ်ခုကိုအသစ်ရှာဖွေရန်, သို့မဟုတ်ကွဲပြားခြားနားသောတန်ဖိုးများကိုရှာဖွေရန်နှိုင်းယှဉ်ပါ။
အခိုင်အမာအတည်ပြုချက် <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 နှင့်ခြွင်းချက်ကိုင်တွယ်မှုကိုပေါင်းစပ်နိုင်သည်။