လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP 7 -x နှင့် PHP 8.x ရှိ MB_Get_info တို့အကြားကွဲပြားခြားနားမှုများနှင့်လိုက်လျောညီထွေဖြစ်မှုကိုခွဲခြမ်းစိတ်ဖြာခြင်း

PHP 7 -x နှင့် PHP 8.x ရှိ MB_Get_info တို့အကြားကွဲပြားခြားနားမှုများနှင့်လိုက်လျောညီထွေဖြစ်မှုကိုခွဲခြမ်းစိတ်ဖြာခြင်း

gitbox 2025-05-29

PHP ၏ Mbstring extension သည် Multibyte ကြိုးများပြုပြင်သည့်အခါအလွန်အရေးကြီးသောအခန်းကဏ် plays မှပါ 0 င်သည်။ ၎င်းတို့အနက် MB_GEget_info () သည်လက်ရှိ encoding, ရှာဖွေခြင်းအမှာစာများကဲ့သို့သောလက်ရှိ Mbstring ၏ configuration information ကိုကြည့်ရှုရန်အသုံးများသော function တစ်ခုဖြစ်သည်။

PHP PHP မှ 7.x ခေတ်မှ 8.x မှ 8.x မှ 8.x, MB_Get_info () သည် အချို့သောသိမ်မွေ့သော်လည်းအရေးကြီးသောပြောင်းလဲမှုများကိုလည်းပြုလုပ်သည်။ ဤဆောင်းပါးသည်ဤအပြောင်းအလဲများကိုအသေးစိတ်ဖော်ပြရန်နှင့်သူတို့ယူဆောင်လာနိုင်သည့်လိုက်ဖက်သည့်ပြ issues နာများကိုအသေးစိတ်ဖော်ပြပါမည်။

1 ။ MB_Get_info () PHP 7.x တွင်

PHP 7ST တွင် MB_Get_info () တွင် MB_Get_info () တွင်ခေါ်ဆိုမှုနည်းလမ်းနှစ်မျိုးရှိသည်။

  • parameters တွေကိုမပါဘဲဖုန်းဆက်ပါMbstring Configuration Information အားလုံးကိုပြန်ပို့ပါ။

  • parameters တွေကိုခေါ်ဆိုပါ - သင်ကသက်ဆိုင်ရာ configuration information ကိုပြန်ပို့ရန်, internal_encoding ' ကဲ့သို့သော string parameter ကိုဖြတ်သွားနိုင်သည်။

နမူနာကုဒ် :

 <?php
// အားလုံးရယူပါ mbstring ပြင်ဆင်မှုသတင်းအချက်အလက်
$info = mb_get_info();
print_r($info);

// ရယူ特定的ပြင်ဆင်မှုသတင်းအချက်အလက်
$internalEncoding = mb_get_info('internal_encoding');
echo "Internal Encoding: " . $internalEncoding;
?>

ဤအချက်အလက်သည် developer များအထူးသဖြင့်နိုင်ငံတကာအပလီကေးရှင်းများနှင့်စပ်လျဉ်း။ လက်ရှိပတ်ဝန်းကျင်၏စရိုက်လက်ခဏာကိုသတ်မှတ်သည့်ဇာတ်ကောင်များကိုနားလည်ရန်ကူညီနိုင်သည်။

2 ။ PHP 8.x အတွက်အပြောင်းအလဲများ

PHP 8.x ကိုရိုက်ထည့်ပြီးနောက် MB_Get_info () သည် အောက်ပါချိန်ညှိချက်များကိုပြုလုပ်သည်။

  • အချို့သော configuration သတင်းအချက်အလက်များကိုဖယ်ရှားပစ်သည်
    ဥပမာအားဖြင့်, အတိတ်ကခေတ်နောက်ကျနေသောလယ်ကွင်းများ (ဤကဲ့သို့သော Http_input , http_output ) တွင် Mbstring HTTP input နှင့် output ကိုလုပ်ငန်းစဉ်မရှိတော့ပါ။ ဤအကြောင်းအရာများသည်ယခုအခါပါ 0 င်သော PHP stream နှင့် input filter များသို့တစ်ပုံစံတည်းလက်ဖြင့်လွှဲပြောင်းပေးသည်။

  • ပြန်လာသောလယ်ကွက်အရေအတွက်ကိုလျှော့ချသည်
    အကယ်. သင်၏ကုဒ်သည် PHP 8 တွင် MB_Get_info () တွင် http_output ကို သုံး. HTTP_OutFOut () ကို အသုံးပြု. အခြားအရာများအပေါ်ထားရှိသောအဓိကအမည်များပေါ်တွင်မူတည်သည်။

  • အမျိုးအစားကြေငြာချက်ကိုအားဖြည့်သည်
    PHP 8 တွင် MB_GEget_info () ပြန်လာသည့် Value Value အမျိုးအစားသည် ပို. တင်းကြပ်စွာနှင့် မှားယွင်းသော သို့မဟုတ်အခြားထူးဆန်းသောရလဒ်များကိုမပြန်မေးမြန်းပါ။

  • အမှားကိုင်တွယ်နည်းလမ်းပြောင်းလဲသွားပြီ
    မမှန်ကန်သော parameter သည်လွန်ကဲသောအရာကမှားယွင်းစွာပြန်လည်ထူထောင်ခြင်းမပြုပါက PHP 8 တွင် TypeError သို့မဟုတ် PlotorError ကို ယခုတွင် မှားယွင်းစွာ ပြန်လာခဲ့ပေမည်။

PHP 8.x နမူနာကုဒ် :

 <?php
// အားလုံးရယူပါ mbstring ပြင်ဆင်မှုသတင်းအချက်အလက်
$info = mb_get_info();
foreach ($info as $key => $value) {
    echo "{$key} : {$value}\n";
}

// ရယူ internal_encoding အကေြာင်းကြားချက်
try {
    $encoding = mb_get_info('internal_encoding');
    echo "Internal Encoding: " . $encoding;
} catch (ValueError $e) {
    echo "Caught error: " . $e->getMessage();
}
?>

3 ။ လိုက်ဖက်တဲ့သက်ရောက်မှုခွဲခြမ်းစိတ်ဖြာခြင်း

PHP 7.x သို့သင်၏ကုဒ်ကိုအဆင့်မြှင့်တင်ရန်စီစဉ်ထားပါက MB_get_info ကို အသုံးပြုသည့်အခါအောက်ပါလိုက်လျောညီထွေကိစ္စများကိုအာရုံစိုက်ရန်လိုအပ်သည်။

3.1 စွန့်ပစ်ထားသောလယ်ကွင်းများပေါ်တွင်မူတည်သည်

ဤကဲ့သို့သောစွန့်ပစ်ထားသောလယ်ကွင်းများကိုတိုက်ရိုက် 0 င်ရောက်ရန်ကုဒ်နံပါတ်ရှိယုတ္တိဗေဒရှိလျှင် -

 <?php
$httpOutput = mb_get_info()['http_output'];
?>

ထို့နောက် PHP 8 တွင်အမှားတစ်ခုအားတိုက်ရိုက်အစီရင်ခံတင်ပြခြင်း,

Womboxound - ပျောက်ကွယ်သွားသောသော့ချက်အမည်များကိုမှီခိုအားပြရန်ပြန်လည်စီစဉ်ရန်ပြန်လည်ရေးသားရမည်။

 <?php
$info = mb_get_info();
if (isset($info['http_output'])) {
    $httpOutput = $info['http_output'];
} else {
    $httpOutput = 'default'; // သို့မဟုတ်ကျိုးကြောင်းဆီလျော်သောပုံမှန်တန်ဖိုးကိုပေးပါ
}
?>

3.2 အမှားကိုင်တွယ်မှုအမှား

အကယ်. သင်သည် parameters များကို MB_Get_info () ကိုအတည်ပြုပါက PHP 7 တွင် မှားယွင်းစွာ တုံ့ပြန်နိုင်သော်လည်း PHP 8 တွင်ချွင်းချက်အားတိုက်ရိုက်ပစ်ချလိမ့်မည်။ ဥပမာအားဖြင့်:

 <?php
// PHP 7.x ပြန်လာရန်ဖြစ်နိုင်သည် false
var_dump(mb_get_info('non_existing_field'));

// PHP 8.x ပစ်လိမ့်မယ် ValueError
?>

အကြံပြုချက် - ကုဒ်အစဉ်အလာကိုတိုးတက်စေရန်အတွက်ခြွင်းချက်ရိုက်ကူးမှုယုတ္တိဗေဒထည့်ပါ။

3.3 အကောင်းဆုံးအလေ့အကျင့်: လိုက်ဖက်တဲ့အရေးအသားဥပမာ

Code အစုတခုကို PHP 7 နှင့် PHP 8 တွင် run နိုင်ရန်အတွက်တစ်ချိန်တည်းတွင်အောက်ပါစာအရေးအသားနည်းလမ်းကိုသင်ရည်ညွှန်းနိုင်သည်။

 <?php
function safe_mb_get_info(string $option = null) {
    try {
        if ($option !== null) {
            return mb_get_info($option);
        }
        return mb_get_info();
    } catch (Throwable $e) {
        // သစ်ခုတ်,သို့မဟုတ်ပုံမှန်တန်ဖိုးကိုပြန်ပို့ပါ
        error_log("mb_get_info error: " . $e->getMessage());
        return null;
    }
}

// အသုံးပြု
$encoding = safe_mb_get_info('internal_encoding');
echo $encoding ?? 'utf-8';
?>

4 ။ အခြားအကြံပြုချက်များ

  • Mbstring နှင့် Mb_get_info အကြောင်းပိုမိုလေ့လာရန်လိုအပ်ပါက https://gitbox.net/php/php/php/php/hunuation.mbget-info.php သို့ဝင်ရောက်ကြည့်ရှုနိုင်သည်။

  • PHPPSTAN သို့မဟုတ်ဆာလံကျမ်းစသည့်ကိရိယာများကို အသုံးပြု. Phala နှင့်ဆာလံကျမ်းကိုအသုံးပြုရန် API လိုက်ဖက်နိုင်သည့်ပြ issues နာများကိုချက်ချင်းရှာဖွေတွေ့ရှိရန်စီမံကိန်းကိုအဆင့်မြှင့်တင်ခြင်းမပြုမီစီမံကိန်းကိုဆန်းစစ်လေ့လာခြင်းကိုပြုလုပ်ရန်အကြံပြုသည်။

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

ယေဘုယျအားဖြင့် MB_GEget_info () PHP 8.x တွင်သန့်ရှင်းသော, စီမံကိန်းများကိုအဆင့်မြှင့်တင်သည့်အခါအထူးသဖြင့်ဘာသာစကားမျိုးစုံနှင့်ဇာတ်ကောင်အထိခိုက်မခံသည့်စနစ်များပါ 0 င်သည့်စနစ်များကိုသူတို့စတင်ပြီးသည့်နောက်ထူးဆန်းသောဇာတ်ကောင်အပြောင်းအလဲများကိုရှောင်ရှားရန်ဂရုတစိုက်စစ်ဆေးပြီးလိုက်လျောညီထွေဖြစ်အောင်ပြုလုပ်ရမည်။

သတိရပါ - coding processing ၏ပြ problems နာများသည်မကြာခဏလျစ်လျူရှုခံရရန်အလွယ်ကူဆုံးဖြစ်သည်။