လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ပရိုဂရမ်ပျက်ကျစေသည့် cosh (NULL) ခွဲခြမ်းစိတ်ဖြာခြင်း

ပရိုဂရမ်ပျက်ကျစေသည့် cosh (NULL) ခွဲခြမ်းစိတ်ဖြာခြင်း

gitbox 2025-05-27

PHP Development တွင် Function Parameter အမျိုးအစားများသည်မတိုက်ဆိုင်သည့် parameter အမျိုးအစားများကိုမကြာခဏမမျှော်လင့်သောအမှားအယွင်းများကိုဖြစ်ပေါ်စေပြီးအစီအစဉ်ပျက်ပြားများပင်ဖြစ်စေသည်။ ပုံမှန်ဥပမာတစ်ခုမှာ Cosh (Null) ကို ခေါ်သည့်အခါပရိုဂရမ်သည်အပြေးကိုတိုက်ရိုက်ကြားဖြတ်လိမ့်မည်။ ဤဖြစ်စဉ်သည်ရှုပ်ထွေးရုံသာမကထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်ကြီးမားသောအကျိုးဆက်များလည်းဖြစ်နိုင်သည်။ ဤဆောင်းပါးသည်နောက်ကွယ်မှနည်းပညာဆိုင်ရာအကြောင်းပြချက်များကိုအသေးစိတ်လေ့လာပြီးယုံကြည်စိတ်ချရသောဖြေရှင်းနည်းများကိုဖြည့်ဆည်းပေးလိမ့်မည်။

1 ။ ပြ problem နာပေါ်လာလိမ့်မယ်

ကျွန်ုပ်တို့သည်ဤပြ problem နာကိုအောက်ပါရိုးရှင်းသောကုဒ်များဖြင့်မျိုးပွားနိုင်ပါသည်။

 <?php
echo cosh(null);

PHP ဗားရှင်းအချို့တွင်အထက်ပါကုဒ်ကိုကွပ်မျက်ခြင်းကပရိုဂရမ်ကိုအမှားတစ်ခုသတင်းပို့ခြင်းသို့မဟုတ် မှားယွင်းစွာ ပြန်ပို့မည့်အစားလေယာဉ်ပျက်ကျလိမ့်မည်။ ဒါဘာကြောင့်လဲ

2 ။ နောက်ခံအကြောင်းရင်းများကိုခွဲခြမ်းစိတ်ဖြာခြင်း

ပထမအချက်မှာ Cosh () သည် hyperbolic cosine တွက်ချက်ရန်အသုံးပြုသောသင်္ချာဆိုင်ရာလုပ်ဆောင်မှုဖြစ်သည်ဟုရှင်းလင်းရန်လိုအပ်သည်။ PHP တွင်ဤလုပ်ဆောင်ချက်သည်အခြေခံက c သင်္ချာစာကြည့်တိုက် (Libm) တွင် cosh () function ကိုပေါင်းစပ်ထားသည်။ ဤအမျိုးအစားသည်များသောအားဖြင့် parameter သည် parameter သည် floating point နံပါတ်တစ်ဖြစ်ရမည်ဟုလိုအပ်သည်။

NULL ကိုဖြတ်သန်းသွားသောအခါ PHP သည်၎င်းကို နှစ်ဆ ရိုက်ရန်ပြောင်းလဲရန်ကြိုးစားသည်။ အချို့ကိစ္စရပ်များတွင် (PHP သို့မဟုတ်သတ်သတ်မှတ်မှတ်ပလက်ဖောင်းစုစည်းခြင်းနည်းလမ်းများ) တွင်ဤပြောင်းလဲခြင်းဖြစ်စဉ်သည်အားနည်းချက်ရှိနိုင်သည်။ ဤ undefined အပြုအမူသည် segmentation အမှားတစ်ခုဖြစ်ပေါ်စေနိုင်သည်,

ပိုမိုအထူးသ ဖြင့် PHP သည် Null ကိုပြောင်းလဲခြင်းကို နှစ်ချက်လုံး ကိုစနစ်တကျကိုင်တွယ်ခြင်းမပြုပါက၎င်းသည်တရားမ 0 င်နန်တစ်ခုဖြစ်ပြီး,

3 ။ PHP ဗားရှင်းနှင့်ပလက်ဖောင်းအကြားကွဲပြားခြားနားမှု

PHP ဗားရှင်းအားလုံးတွင်ဤပြ problem နာမရှိပါ။ PHP ဗားရှင်းအသစ်များတွင် (PHP 8.1 နှင့်အထက်ကဲ့သို့သော) အမျိုးအစားပြောင်းလဲခြင်းယန္တရားနှင့်အမှားကိုင်တွယ်သည့်ယန္တရားများကိုအလွန်တိုးတက်လာသည်။ ထိုကဲ့သို့သောအမှားများကိုများသောအားဖြင့်ပရိုဂရမ်ကိုပျက်ကျစေမည့်အစားသတိပေးချက်များသို့မဟုတ်ခြွင်းချက်များကိုဖမ်းမိသည်။

သင်၏လက်ရှိ PHP ဗားရှင်းကိုအောက်ပါကုဒ်ကိုဖွင့ ်. ကြည့်ရှုနိုင်သည်။

 <?php
echo phpversion();

အကယ်. သင်သည် PHP ဗားရှင်းအဟောင်းကိုအသုံးပြုနေပါက (ထိုကဲ့သို့သော 7.x) ကိုအသုံးပြုနေပါကအမြန်ဆုံးအဆင့်မြှင့်တင်ရန်အကြံပြုသည်။

4 ။ ဖြေရှင်းနည်း

1 ။ ရှင်းလင်းပြတ်သားစွာစစ်ဆေးနေ

တိုက်ရိုက်နည်းလမ်းမှာခေါ်ဆိုမှုမပြုမီ parameter သည်မှန်ကန်သောတန်ဖိုးကိုမဖြစ်စေစစ်ဆေးရန်ဖြစ်သည်။

 <?php
$input = null;
if (is_numeric($input)) {
    echo cosh($input);
} else {
    echo "မမှန်ကန်သော input ကို";
}

2 ။ ခိုင်မာသောအမျိုးအစားကြေငြာချက်များကိုသုံးပါ (PHP 7+)

Parameter သည်အမျိုးအစားများအတွက်လုပ်ဆောင်ချက်များတွင်အမျိုးအစားကြေငြာချက်များကိုသုံးပါ။

 <?php
function safeCosh(float $value): float {
    return cosh($value);
}

ဒီ function ကိုခေါ်တဲ့အခါ floating non-point အရေအတွက်ကိုမဖွင့်ပါက typouros rocess ကိုချွင်းချက်တစ်ခုချပစ်လိမ့်မည်။

3 ။ အထွေထွေကိရိယာ function ကိုအဖြစ် encapsulated

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

 <?php
function safeMathCall(callable $func, $value) {
    if (is_numeric($value)) {
        return $func($value);
    }
    return null;
}

$result = safeMathCall('cosh', null);

v. အကြံပြုချက်များ debugging

ထိုကဲ့သို့သောလေယာဉ်ပျက်ကျမှုပြ problem နာကိုကြုံတွေ့ရသောအခါ crash log အချက်အလက်များကိုကြည့်ရှုရန် PHP ၏အဓိက dump function ကို enable လုပ်နိုင်သည်။ PHP Runtime ကိုစစ်ဆေးရန် GDB ကဲ့သို့သော debugging tools များကိုလည်းအသုံးပြုရန်အကြံပြုသည်။ Debugging စွမ်းရည်ကိုရယူရန်အောက်ပါ link ကိုသင်ရည်ညွှန်းနိုင်သည်။

https://gitbox.net/php-Debug-core-dump-Guide

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

CHOSH (NULL) ကိုခေါ်ဆိုခြင်းပြ The နာသည် PhP အစီအစဉ်ကိုပျက်ကျနိုင်ပြီး Parameter typ mismatch သည်မလုံခြုံသော C function ကိုမလုံခြုံသောအပြုအမူကိုဖြစ်ပေါ်စေသည်။ PHP သည်သင်္ချာဆိုင်ရာလုပ်ဆောင်မှုများကိုခေါ်ရာတွင် 0 င်ရောက်သည့်ဘာသာစကားဖြစ်သည်,

PHP ဗားရှင်းကိုအဆင့်မြှင့်ခြင်းအားဖြင့်အမျိုးအစားစစ်ဆေးမှုကိုထည့်သွင်းခြင်းနှင့်အထွေထွေလုံခြုံရေးလုပ်ဆောင်ချက်များကို encaping လုပ်ရန်နှင့်အထွေထွေလုံခြုံရေးလုပ်ငန်းဆောင်တာများကို encapsuars လုပ်ခြင်းသည်အလားတူပြ problems နာများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။