PHP Development တွင် Function Parameter အမျိုးအစားများသည်မတိုက်ဆိုင်သည့် parameter အမျိုးအစားများကိုမကြာခဏမမျှော်လင့်သောအမှားအယွင်းများကိုဖြစ်ပေါ်စေပြီးအစီအစဉ်ပျက်ပြားများပင်ဖြစ်စေသည်။ ပုံမှန်ဥပမာတစ်ခုမှာ Cosh (Null) ကို ခေါ်သည့်အခါပရိုဂရမ်သည်အပြေးကိုတိုက်ရိုက်ကြားဖြတ်လိမ့်မည်။ ဤဖြစ်စဉ်သည်ရှုပ်ထွေးရုံသာမကထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်ကြီးမားသောအကျိုးဆက်များလည်းဖြစ်နိုင်သည်။ ဤဆောင်းပါးသည်နောက်ကွယ်မှနည်းပညာဆိုင်ရာအကြောင်းပြချက်များကိုအသေးစိတ်လေ့လာပြီးယုံကြည်စိတ်ချရသောဖြေရှင်းနည်းများကိုဖြည့်ဆည်းပေးလိမ့်မည်။
ကျွန်ုပ်တို့သည်ဤပြ problem နာကိုအောက်ပါရိုးရှင်းသောကုဒ်များဖြင့်မျိုးပွားနိုင်ပါသည်။
<?php
echo cosh(null);
PHP ဗားရှင်းအချို့တွင်အထက်ပါကုဒ်ကိုကွပ်မျက်ခြင်းကပရိုဂရမ်ကိုအမှားတစ်ခုသတင်းပို့ခြင်းသို့မဟုတ် မှားယွင်းစွာ ပြန်ပို့မည့်အစားလေယာဉ်ပျက်ကျလိမ့်မည်။ ဒါဘာကြောင့်လဲ
ပထမအချက်မှာ Cosh () သည် hyperbolic cosine တွက်ချက်ရန်အသုံးပြုသောသင်္ချာဆိုင်ရာလုပ်ဆောင်မှုဖြစ်သည်ဟုရှင်းလင်းရန်လိုအပ်သည်။ PHP တွင်ဤလုပ်ဆောင်ချက်သည်အခြေခံက c သင်္ချာစာကြည့်တိုက် (Libm) တွင် cosh () function ကိုပေါင်းစပ်ထားသည်။ ဤအမျိုးအစားသည်များသောအားဖြင့် parameter သည် parameter သည် floating point နံပါတ်တစ်ဖြစ်ရမည်ဟုလိုအပ်သည်။
NULL ကိုဖြတ်သန်းသွားသောအခါ PHP သည်၎င်းကို နှစ်ဆ ရိုက်ရန်ပြောင်းလဲရန်ကြိုးစားသည်။ အချို့ကိစ္စရပ်များတွင် (PHP သို့မဟုတ်သတ်သတ်မှတ်မှတ်ပလက်ဖောင်းစုစည်းခြင်းနည်းလမ်းများ) တွင်ဤပြောင်းလဲခြင်းဖြစ်စဉ်သည်အားနည်းချက်ရှိနိုင်သည်။ ဤ undefined အပြုအမူသည် segmentation အမှားတစ်ခုဖြစ်ပေါ်စေနိုင်သည်,
ပိုမိုအထူးသ ဖြင့် PHP သည် Null ကိုပြောင်းလဲခြင်းကို နှစ်ချက်လုံး ကိုစနစ်တကျကိုင်တွယ်ခြင်းမပြုပါက၎င်းသည်တရားမ 0 င်နန်တစ်ခုဖြစ်ပြီး,
PHP ဗားရှင်းအားလုံးတွင်ဤပြ problem နာမရှိပါ။ PHP ဗားရှင်းအသစ်များတွင် (PHP 8.1 နှင့်အထက်ကဲ့သို့သော) အမျိုးအစားပြောင်းလဲခြင်းယန္တရားနှင့်အမှားကိုင်တွယ်သည့်ယန္တရားများကိုအလွန်တိုးတက်လာသည်။ ထိုကဲ့သို့သောအမှားများကိုများသောအားဖြင့်ပရိုဂရမ်ကိုပျက်ကျစေမည့်အစားသတိပေးချက်များသို့မဟုတ်ခြွင်းချက်များကိုဖမ်းမိသည်။
သင်၏လက်ရှိ PHP ဗားရှင်းကိုအောက်ပါကုဒ်ကိုဖွင့ ်. ကြည့်ရှုနိုင်သည်။
<?php
echo phpversion();
အကယ်. သင်သည် PHP ဗားရှင်းအဟောင်းကိုအသုံးပြုနေပါက (ထိုကဲ့သို့သော 7.x) ကိုအသုံးပြုနေပါကအမြန်ဆုံးအဆင့်မြှင့်တင်ရန်အကြံပြုသည်။
တိုက်ရိုက်နည်းလမ်းမှာခေါ်ဆိုမှုမပြုမီ parameter သည်မှန်ကန်သောတန်ဖိုးကိုမဖြစ်စေစစ်ဆေးရန်ဖြစ်သည်။
<?php
$input = null;
if (is_numeric($input)) {
echo cosh($input);
} else {
echo "မမှန်ကန်သော input ကို";
}
Parameter သည်အမျိုးအစားများအတွက်လုပ်ဆောင်ချက်များတွင်အမျိုးအစားကြေငြာချက်များကိုသုံးပါ။
<?php
function safeCosh(float $value): float {
return cosh($value);
}
ဒီ function ကိုခေါ်တဲ့အခါ floating non-point အရေအတွက်ကိုမဖွင့်ပါက typouros rocess ကိုချွင်းချက်တစ်ခုချပစ်လိမ့်မည်။
ထပ်ခါတလဲလဲဆုံးဖြတ်ချက်များကိုရှောင်ရှားရန်သင်ကပိုမိုလုံခြုံသောသင်္ချာဆိုင်ရာခေါ်ဆိုမှုနည်းလမ်းတစ်ခုအနေဖြင့်သင်ခန်းစာယူနိုင်သည်။
<?php
function safeMathCall(callable $func, $value) {
if (is_numeric($value)) {
return $func($value);
}
return null;
}
$result = safeMathCall('cosh', null);
ထိုကဲ့သို့သောလေယာဉ်ပျက်ကျမှုပြ problem နာကိုကြုံတွေ့ရသောအခါ crash log အချက်အလက်များကိုကြည့်ရှုရန် PHP ၏အဓိက dump function ကို enable လုပ်နိုင်သည်။ PHP Runtime ကိုစစ်ဆေးရန် GDB ကဲ့သို့သော debugging tools များကိုလည်းအသုံးပြုရန်အကြံပြုသည်။ Debugging စွမ်းရည်ကိုရယူရန်အောက်ပါ link ကိုသင်ရည်ညွှန်းနိုင်သည်။
https://gitbox.net/php-Debug-core-dump-Guide
CHOSH (NULL) ကိုခေါ်ဆိုခြင်းပြ The နာသည် PhP အစီအစဉ်ကိုပျက်ကျနိုင်ပြီး Parameter typ mismatch သည်မလုံခြုံသော C function ကိုမလုံခြုံသောအပြုအမူကိုဖြစ်ပေါ်စေသည်။ PHP သည်သင်္ချာဆိုင်ရာလုပ်ဆောင်မှုများကိုခေါ်ရာတွင် 0 င်ရောက်သည့်ဘာသာစကားဖြစ်သည်,
PHP ဗားရှင်းကိုအဆင့်မြှင့်ခြင်းအားဖြင့်အမျိုးအစားစစ်ဆေးမှုကိုထည့်သွင်းခြင်းနှင့်အထွေထွေလုံခြုံရေးလုပ်ဆောင်ချက်များကို encaping လုပ်ရန်နှင့်အထွေထွေလုံခြုံရေးလုပ်ငန်းဆောင်တာများကို encapsuars လုပ်ခြင်းသည်အလားတူပြ problems နာများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။