လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PhpP_uname () Multi-platform compatibitivity code ကိုစမ်းသပ်ရန်

PhpP_uname () Multi-platform compatibitivity code ကိုစမ်းသပ်ရန်

M66 2025-06-02

PHP applications များကိုတီထွင်သည့်အခါကျွန်ုပ်တို့သည်မတူညီသော operating system ပလက်ဖောင်းများရှိ code ကိုလိုက်လျောညီထွေစွာစဉ်းစားရန်မကြာခဏလိုအပ်လေ့ရှိသည်။ ကျွန်ုပ်တို့၏ Code သည်အမျိုးမျိုးသောပလက်ဖောင်းများ၌ချောချောမွေ့မွေ့ရှိမရှိစစ်ဆေးနိုင်ရန် Php_uname () function သည်အသုံးဝင်သောစနစ်အချက်အလက်များ, ကံကောင်းထောက်မစွာ, ကျွန်ုပ်တို့သည် Php_uname ၏ပြန်လည်နေရာချထားခြင်း () ကွဲပြားခြားနားသော operating systems များ၏အပြုအမူကိုအတည်ပြုရန်ပိုမိုလွယ်ကူစေရန် PHP_UNAME () ကိုတုန့်ပြန်ရန်နည်းစနစ်များကိုသုံးနိုင်သည်။

ဤဆောင်းပါးတွင်ကျွန်ုပ်တို့သည် Mock Php_uname () သည် အမျိုးမျိုးသောစနစ်များနှင့်သဟဇာတဖြစ်အောင်လုပ်ခြင်းအားဖြင့်ကွဲပြားခြားနားသောပလက်ဖောင်းများရှိ computer များနှင့်ကိုက်ညီမှုကိုမည်သို့စမ်းသပ်ရမည်ကိုမိတ်ဆက်ပေးမည်။

1 ။ php_uname () function ကဘာလဲ။

PHP_Uname () သည် PHP ၏ built-in function တစ်ခုဖြစ်သည်။ ၎င်းသည်လက်ရှိ operating system နှင့်ပတ်သက်သောသတင်းအချက်အလက်များကိုရရှိသည်။ ၎င်းသည် operating system အမည်, ဗားရှင်းနံပါတ်, စက်ဗိုင်းရပ်ရေးစနစ်ဗားရှင်းစသည့်အချက်အလက်များပါ 0 င်သည့် string တစ်ခုသို့ပြန်ပို့သည်။ များသောအားဖြင့် Return Value format သည်အောက်ပါအတိုင်းဖြစ်သည် -

 string(31) "Linux myhost 4.15.0-20-generic #21-Ubuntu SMP"

2 ။ php_uname ကိုတုပရန် Mocking နည်းပညာကိုသုံးပါ။

ကွဲပြားခြားနားသော operating system platforms များအပေါ်ကုဒ်သည်စနစ်တကျအလုပ်လုပ်ရန်သေချာစေရန်အတွက်မတူညီသောပလက်ဖောင်းများကိုတိုက်ရိုက်အသုံးပြုရန်အမြဲတမ်းမဖြစ်နိုင်ပါ။ အထူးသဖြင့်အဆက်မပြတ်ပေါင်းစည်းမှု (CI) tools များသုံးသောအခါကျွန်ုပ်တို့သည်စင်မြင့်တိုင်းတွင် Code ကိုတိုက်ရိုက် run ။ မရပါ။ သို့သော်ကျွန်ုပ်တို့သည်မတူကွဲပြားသောပလက်ဖောင်းများအောက်တွင်လိုက်ဖက်သောအသုံးချမှုကိုစမ်းသပ်ရန် Php_uname () မှပြန်လာသော operating system အချက်အလက်များကိုတုပရန် Mocking Technology ကိုသုံးနိုင်သည်။

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

3 ။ Php_uname () function ကိုဘယ်လိုလှောင်ပြောင်မလဲ

PHP ကိုယ်တိုင်က Php_uname () ကဲ့သို့သောအတွင်းပိုင်းလုပ်ဆောင်မှုများကိုတိုက်ရိုက်လှောင်ပြောင်ရန် built-in နည်းလမ်းမရှိပါ။ သို့သော်ကျွန်ုပ်တို့သည်ဤအရာကို Phpunit သို့မဟုတ် လှောင်ပြောင်ခြင်း ကဲ့သို့သောတတိယပါတီစာကြည့်တိုက်များမှတဆင့်အောင်မြင်နိုင်သည်။

phpunit ကိုအသုံးပြုပြီး

သင်၏စီမံကိန်းတွင် PHPunit ကိုစမ်းသပ်မူဘောင်အဖြစ်သင်အသုံးပြုပါက PHP_UNAME () function ၏အပြုအမူကိုစိတ်ကြိုက်စမ်းသပ်မှုနှစ်ဆဖြင့်ဖန်တီးနိုင်သည်။ Phpunit သည် Createmock () method ကိုထောက်ပံ့ပေးသည်။ ၎င်းသည်အတန်းတစ်ခု၏နည်းလမ်း၏အပြုအမူကိုတုပရန်အသုံးပြုနိုင်သည်

 // နမူနာကုဒ်
class MyTest extends PHPUnit\Framework\TestCase
{
    public function testSystemInfo()
    {
        // အာရုံဖော်ခြင်း php_uname() Value ကိုပြန်သွားပါ
        $this->setMockFunction('php_uname', 'Linux test-host 5.4.0-40-generic #44-Ubuntu SMP');

        // စမ်းသပ်ရန်လိုအပ်သည့်ကုဒ်ကိုခေါ်ဆိုခြင်း
        $result = php_uname();
        
        // 断言Value ကိုပြန်သွားပါ符合预期
        $this->assertEquals('Linux test-host 5.4.0-40-generic #44-Ubuntu SMP', $result);
    }

    private function setMockFunction($functionName, $mockedValue)
    {
        runkit_function_redefine($functionName, '', 'return "' . $mockedValue . '";');
    }
}

မထီမဲ့မြင်ပြုခြင်းကိုအသုံးပြုခြင်း

လှောင်ပြောင်ခြင်းသည် function faction များကိုလှောင်ပြောင်ရန်ရိုးရှင်းသော interface ကိုထောက်ပံ့ပေးသောအခြားလူကြိုက်များသော PHP မုတ်ဆိတ်မွေးစာကြည့်တိုက်ဖြစ်သည်။ PHP_UNAME () function ကိုတုပရန်မထီမဲ့မြင်ပြုခြင်းကိုအသုံးပြုခြင်းဥပမာတစ်ခုမှာဤတွင်ဖြစ်သည်။

 use Mockery as m;

class MyTest extends PHPUnit\Framework\TestCase
{
    public function tearDown(): void
    {
        m::close();
    }

    public function testSystemInfo()
    {
        // အသုံးပြု Mockery အာရုံဖော်ခြင်း php_uname လုပ်ဆောင်ချက်
        $mock = m::mock('alias:php');
        $mock->shouldReceive('php_uname')->andReturn('Windows NT test-host 10.0');

        // စမ်းသပ်ရန်လိုအပ်သည့်ကုဒ်ကိုခေါ်ဆိုခြင်း
        $result = php_uname();
        
        // 断言Value ကိုပြန်သွားပါ符合预期
        $this->assertEquals('Windows NT test-host 10.0', $result);
    }
}

4. ကွဲပြားခြားနားသောပလက်ဖောင်းပေါ်ရှိစစ်ဆေးမှုများကိုတုပပါ

Mocking Technology မှတစ်ဆင့် Php_uname () မှပြန်လာသောမတူညီသော operating system အချက်အလက်များကိုအလွယ်တကူတုန့်ပြန်နိုင်သည်။ ထို့နောက်မတူညီသောပလက်ဖောင်းများရှိ code ၏လိုက်ဖက်မှုကိုအတည်ပြုနိုင်သည်။ ဥပမာအားဖြင့်, Linux, Windows နှင့် MacOS ပတ်ဝန်းကျင်ကိုဤပလက်ဖောင်းများအရလည်ပတ်နေသောကုဒ်များ၏ရလဒ်များကိုစစ်ဆေးရန်တွန်းအားပေးပါ။

 // အာရုံဖော်ခြင်း Linux ဇါတ်စင်
$this->setMockFunction('php_uname', 'Linux myhost 4.15.0-20-generic #21-Ubuntu SMP');

// အာရုံဖော်ခြင်း Windows ဇါတ်စင်
$this->setMockFunction('php_uname', 'Windows NT myhost 10.0');

// အာရုံဖော်ခြင်း macOS ဇါတ်စင်
$this->setMockFunction('php_uname', 'Darwin myhost 19.5.0 Darwin Kernel Version 19.5.0');

Seululation ပြီးနောက်သင်သည် Phpunit ၏အခိုင်အမာသည့်အင်္ဂါရပ်များကိုကွဲပြားသော operating systems များအပေါ်မျှော်လင့်ထားသည့်အတိုင်းပြုမူဆောင်ရွက်သည်ကိုစစ်ဆေးရန်အသုံးပြုနိုင်သည်။

5 ။ အကျဉ်းချုပ်

Mocking Technology ကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် Php_uname () function ၏ return function ကိုအလွယ်တကူတုပပြီးမတူညီသော operating system platforms များရှိ code ၏သဟဇာတကိုအလွယ်တကူပြုလုပ်နိုင်သည်။ ဤချဉ်းကပ်နည်းသည် operating system များစွာတွင်လက်စွဲစာအုပ်စမ်းသပ်ခြင်းကိုပြုလုပ်ရန်အချိန်ကိုသာသိမ်းဆည်းရန်သာမကကျွန်ုပ်တို့၏လျှောက်လွှာများ၏ Cross-platform ကိုအတည်ပြုရန်ယုံကြည်စိတ်ချရသောနည်းလမ်းတစ်ခုကိုလည်းထောက်ပံ့ပေးသည်။

ကွဲပြားခြားနားသော operating system information simulating အားဖြင့် PHP applications များသည်ပလက်ဖောင်းအမျိုးမျိုးကိုချောချောမွေ့မွေ့လည်ပတ်နိုင်ကြောင်းသေချာစေရန်,

ဆက်စပ်အကြောင်းအရာ