လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> SetTTYPE တွင်အမျိုးအစားမကိုက်ညီသောအမှားအယွင်းများကိုမည်သို့ရှောင်ရှားရမည်နည်း ()

SetTTYPE တွင်အမျိုးအစားမကိုက်ညီသောအမှားအယွင်းများကိုမည်သို့ရှောင်ရှားရမည်နည်း ()

gitbox 2025-05-29

1 ။ setterype ၏အလုပ်လုပ်နိယာမကိုနားလည်ပါ ()

Settype () () သည် variable ကိုသတ်မှတ်ထားသောအမျိုးအစားအရပြောင်းလဲပြီးမူရင်း variable ကိုကိုယ်တိုင်ပြုပြင်လိမ့်မည်။ Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 bool settype(mixed &$var, string $type)

ဒါဟာနှစ်ခု parameters တွေကိုလက်ခံရရှိ:

  1. $ var : အမျိုးအစားအဖြစ်ပြောင်းလဲရန်လိုအပ်သည့် variable ကို (ကိုးကားစရာနိဗ္ဗာန်) ။

  2. $ type : Target အမျိုးအစားသည် "Integer" , " float", "string", "string" , "array", "Object" သို့မဟုတ် "NURL" သို့မဟုတ် "NURL" သို့မဟုတ် "NURL" သို့မဟုတ် "NURL" သို့မဟုတ် "NURL" သို့မဟုတ် "NURL" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" ,

ပြောင်းလဲခြင်းသည်ပြောင်းလဲခြင်းသည်အောင်မြင်သည်ကိုညွှန်ပြရန် function ကို မှန်ကန်စွာ ပြန်ပို့သည်


2 ။ ဘုံအမျိုးအစားကူးပြောင်းခြင်းထောင်ချောက်

1 ။ Integer မှ string ကို string ကို

 $val = '';
settype($val, 'integer');
echo $val; // ထုတ်လုပ်ခြင်း 0

ပြနာ - အချည်းနှီးသော string ကို 0 င်ပြောင်းလဲခြင်းသည် 0 ကမျှော်လင့်ထားသည့်ယုတ္တိဗေဒနှင့်မကိုက်ညီပါ။

2 ။ string ကိုမှခင်းကျင်း

 $val = [1, 2, 3];
settype($val, 'string');
echo $val; // ထုတ်လုပ်ခြင်း "Array"

ပြနာ - ဒီဟာက string တွေကို string တွေထဲက array element တွေကို concatenate မလုပ်ဘူး,

3 ။ integer မှအရာဝတ်ထု

 $val = new stdClass();
settype($val, 'integer');
// သတိပေးပစ်,ဘာသာပြောင်းလို့မရဘူး

ပြ Proble နာ - ရှုပ်ထွေးသောအမျိုးအစားများကဲ့သို့သောအရာဝတ်ထုများကဲ့သို့သောအရာဝတ်ထုများသည် Scalars သို့ကူးပြောင်းခြင်းမပြုနိုင်သည့်အခါသတိပေးချက်များကိုမြှင့်တင်ပေးလိမ့်မည်။


3 ။ MISTCHED အမှားအယွင်းများကိုရှောင်ရှားရန်နည်းဗျူဟာများ

1 ။ Type Checking အတွက် GetType () သို့မဟုတ် _ * () function ကိုသုံးပါ

SetTYPE () ကို မခေါ်မီ, မူရင်းအမျိုးအစားမူရင်းအမျိုးအစားသည်ပြောင်းလဲခြင်းအတွက်သင့်လျော်ခြင်းရှိမရှိအတည်ပြုပါ။

 if (is_string($val)) {
    settype($val, 'integer');
}

2 ။ ထည့်သွင်းအရင်းအမြစ်၏ဒေတာဖွဲ့စည်းပုံကိုထိန်းချုပ်ပါ

သူတို့မျှော်လင့်ထားသည့်အမျိုးအစားကိုသေချာစေရန် (ဥပမာ $ _get , $ _post , $ _post, $ _Request ) ကို filter လုပ်ပြီးအတည်ပြုပါ။

 $age = $_GET['age'] ?? '';
if (is_numeric($age)) {
    settype($age, 'integer');
}

3 ။ Type-Safe အခြားရွေးချယ်စရာများကိုသုံးပါ

Code Readability နှင့် Security ကိုတိုးတက်စေရန်အတွက်ဖြစ်နိုင်သည့်အချိန်တွင်ခိုင်မာသောပြောင်းလဲခြင်းအော်ပရေတာများကိုအသုံးပြုခြင်း -

 $val = (int) $val;

ဤနည်းလမ်းသည်မူရင်း variable အမျိုးအစားကိုမဖြစ်စေပါက၎င်းအားပြန်လည်ခန့်အပ်ခြင်းမရှိပါက,

4 ။ ပြောင်းလဲခြင်းပျက်ကွက်မှုကိုကိုင်တွယ်ရန်ခြွင်းချက်ယန္တရားကိုသုံးပါ

SetTTYPE () ခြွင်းချက်များကိုမပစ်နိုင်သော်လည်းယုတ္တိဗေဒကိုတိုးမြှင့်စေရန်၎င်းကိုသင်ခန်းစာယူနိုင်သည်။

 function safeSetType(&$var, $type) {
    $validTypes = ['boolean', 'integer', 'float', 'string', 'array', 'object', 'null'];
    if (!in_array($type, $validTypes)) {
        throw new InvalidArgumentException("မထောက်ပံ့သောပစ်မှတ်အမျိုးအစားများ:$type");
    }
    return settype($var, $type);
}

4 ။ အမှန်တကယ်ဇာတ်လမ်း: URL parameters တွေကိုကိန်းဂဏန်းများကိုပြောင်းပါ

URL မှ paging parameter များကိုရယူရန်ပုံမှန်ဇာတ်လမ်းတစ်ပုဒ်ကိုစဉ်းစားပါ။

 $page = $_GET['page'] ?? 1;

if (is_numeric($page)) {
    settype($page, 'integer');
} else {
    $page = 1;
}

$offset = ($page - 1) * 10;

// ထို့နောက်ဒေတာဘေ့စ်စုံစမ်းမှုကို execute လုပ်ရန်ဤ offset ကိုအသုံးပြုပါ
$url = "https://gitbox.net/api/posts?page=" . $page;

ဤဥပမာတွင်၎င်းသည်နံပါတ်တစ်ခုရှိမရှိဆုံးဖြတ်ခြင်းသည် $ စာမျက်နှာ variable သည်မမျှော်လင့်သော 0 သို့မဟုတ် non-integer တန်ဖိုးမဖြစ်လာစေရန်သေချာစေနိုင်သည်။