Settype () () သည် variable ကိုသတ်မှတ်ထားသောအမျိုးအစားအရပြောင်းလဲပြီးမူရင်း variable ကိုကိုယ်တိုင်ပြုပြင်လိမ့်မည်။ Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
bool settype(mixed &$var, string $type)
ဒါဟာနှစ်ခု parameters တွေကိုလက်ခံရရှိ:
$ var : အမျိုးအစားအဖြစ်ပြောင်းလဲရန်လိုအပ်သည့် variable ကို (ကိုးကားစရာနိဗ္ဗာန်) ။
$ type : Target အမျိုးအစားသည် "Integer" , " float", "string", "string" , "array", "Object" သို့မဟုတ် "NURL" သို့မဟုတ် "NURL" သို့မဟုတ် "NURL" သို့မဟုတ် "NURL" သို့မဟုတ် "NURL" သို့မဟုတ် "NURL" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" သို့မဟုတ် "Object" ,
ပြောင်းလဲခြင်းသည်ပြောင်းလဲခြင်းသည်အောင်မြင်သည်ကိုညွှန်ပြရန် function ကို မှန်ကန်စွာ ပြန်ပို့သည် ။
$val = '';
settype($val, 'integer');
echo $val; // ထုတ်လုပ်ခြင်း 0
ပြနာ - အချည်းနှီးသော string ကို 0 င်ပြောင်းလဲခြင်းသည် 0 ကမျှော်လင့်ထားသည့်ယုတ္တိဗေဒနှင့်မကိုက်ညီပါ။
$val = [1, 2, 3];
settype($val, 'string');
echo $val; // ထုတ်လုပ်ခြင်း "Array"
ပြနာ - ဒီဟာက string တွေကို string တွေထဲက array element တွေကို concatenate မလုပ်ဘူး,
$val = new stdClass();
settype($val, 'integer');
// သတိပေးပစ်,ဘာသာပြောင်းလို့မရဘူး
ပြ Proble နာ - ရှုပ်ထွေးသောအမျိုးအစားများကဲ့သို့သောအရာဝတ်ထုများကဲ့သို့သောအရာဝတ်ထုများသည် Scalars သို့ကူးပြောင်းခြင်းမပြုနိုင်သည့်အခါသတိပေးချက်များကိုမြှင့်တင်ပေးလိမ့်မည်။
SetTYPE () ကို မခေါ်မီ, မူရင်းအမျိုးအစားမူရင်းအမျိုးအစားသည်ပြောင်းလဲခြင်းအတွက်သင့်လျော်ခြင်းရှိမရှိအတည်ပြုပါ။
if (is_string($val)) {
settype($val, 'integer');
}
သူတို့မျှော်လင့်ထားသည့်အမျိုးအစားကိုသေချာစေရန် (ဥပမာ $ _get , $ _post , $ _post, $ _Request ) ကို filter လုပ်ပြီးအတည်ပြုပါ။
$age = $_GET['age'] ?? '';
if (is_numeric($age)) {
settype($age, 'integer');
}
Code Readability နှင့် Security ကိုတိုးတက်စေရန်အတွက်ဖြစ်နိုင်သည့်အချိန်တွင်ခိုင်မာသောပြောင်းလဲခြင်းအော်ပရေတာများကိုအသုံးပြုခြင်း -
$val = (int) $val;
ဤနည်းလမ်းသည်မူရင်း variable အမျိုးအစားကိုမဖြစ်စေပါက၎င်းအားပြန်လည်ခန့်အပ်ခြင်းမရှိပါက,
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);
}
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 တန်ဖိုးမဖြစ်လာစေရန်သေချာစေနိုင်သည်။