PHP applications များကိုတီထွင်သည့်အခါကျွန်ုပ်တို့သည်ပြင်ပ interfaces အမျိုးမျိုးကိုမကြာခဏခေါ်ဆိုခြင်းသို့မဟုတ် client version အချက်အလက်များကိုကျွန်ုပ်တို့မကြာခဏခေါ်လေ့ရှိသည်။ တစ်ခါတစ်ရံ Get_Client_Version ကဲ့သို့သော client's version ကိုရယူရန် function တစ်ခုကိုကျွန်ုပ်တို့ရေးသည်။ သို့သော်အချို့ဖြစ်ရပ်များတွင်ဆာဗာသည် function ၏ပြန်လာရလဒ်ကိုမှားယွင်းစွာခွဲခြမ်းစိတ်ဖြာနိုင်သည်။ ဤပြ problem နာသည်များသောအားဖြင့်ဒေတာထုတ်လွှင့်ခြင်း, Get_Client_Version function ကို php server အမှားအတွက်အကြောင်းပြချက်များနှင့်ဖြေရှင်းနည်းများကိုဤဆောင်းပါးတွင်ဆွေးနွေးပါမည်။
Get_Client_Version_Version function သည် client မှဗားရှင်းအချက်အလက်အချို့ကိုရရှိပြီး PHP server သို့ထုတ်လွှင့်သည်။ ဆာဗာပေါ်ရှိဤအချက်အလက်များကိုလက်ခံရရှိပြီးနောက်အမှားဖြေရှင်းမှုဖြစ်ပွားနိုင်သည်။ အမှားခွဲခြမ်းစိတ်ဖြာခြင်းသည်ပရိုဂရမ်ပျက်ခြင်း, အချက်အလက်များရှုပ်ထွေးမှုများကိုမှန်ကန်စွာလုပ်ဆောင်ရန်ပျက်ကွက်ခြင်းဖြစ်နိုင်သည်။
ဥပမာအားဖြင့် API ခေါ်ဆိုမှုတစ်ခုသည် URL ကိုပြန်ပို့နိုင်သည်။
return "https://gitbox.net/api/version?client_id=12345";
PHP server သည်ဤ URL ကိုတိုက်ရိုက်ကိုင်တွယ်လျှင်အချို့သောခွဲခြမ်းစိတ်ဖြာပြ problems နာများဖြစ်နိုင်သည်။ ဘုံအကြောင်းပြချက်များတွင်:
URL အမျိုးအစားအမှား - URL တွင်အထူးအက္ခရာများပါ 0 င ် ပါက ,
ပြန်လည်ရောက်ရှိသည့်ရလဒ်ကိုအမျိုးအစားမတိုက်ဆိုင်မှု - 0 န်ဆောင်မှုခံယူသူသည် JSON format data ကိုပြန်ပို့နိုင်ပြီးဆာလံသည် JSOSS ကိုမှန်ကန်စွာမဖြစ်စေနိုင်သော်လည်းအမှားတစ်ခုဖြစ်ပေါ်စေသည်။
Client encoding ပြ problem နာ - 0 န်ဆောင်မှုခံယူသူနှင့်ဆာဗာသည်ကွဲပြားသောဇာတ်ကောင် encodings (UTF-8 နှင့် ISO-8859-1) ကွဲပြားခြားနားသောဇာတ်ကောင် encodings ကိုသုံးပါက,
URL တွင်အထူးဇာတ်ကောင်များပါ 0 င်သည် URL များကိုတည်ဆောက်ရာတွင်အထူးအက္ခရာများသည် parameters များကိုမှန်ကန်စွာ encoded မဟုတ်လျှင်နားလည်မှုလွဲနိုင်သည်။ ဥပမာအားဖြင့် , သို့မဟုတ် # , အကယ်. parameters တွေကို urlencode ကို မသုံးပါက PHP server သည် Readed URL ကိုမှန်ကန်စွာခွဲထုတ်နိုင်မည်မဟုတ်ပါ။
ဖြေရှင်းချက် - URL ရှိ parameters တွေကို urlenode function ကိုသုံးပါ။
$url = "https://gitbox.net/api/version?client_id=" . urlencode($client_id);
ပြန်လာသောရလဒ်များ၏ပုံစံသည်ကိုက်ညီမှုမရှိပါ Get_Client_Version_version function ကိုပြန်ပို့ပါက JSON format ကိုပြန်ပို့ပါက PHP server သည်၎င်းကိုမှန်ကန်စွာမအောင်မြင်ပါကအမှားတစ်ခုဖြစ်နိုင်သည်။ API interface ကိုခေါ်သည့်အခါ developer များက JSON ကိုခွဲခြမ်းစိတ်ဖြာရန်အကြိမ်ကြိမ်မေ့နေကြသည်။
ဖြေရှင်းချက် - JSON_Decode ကို မှန်ကန်စွာ Parse JSON REVAT ရလဒ်များကိုမှန်ကန်စွာသုံးပါ။
$response = '{"version": "1.0.0", "url": "https://gitbox.net"}';
$data = json_decode($response, true);
echo $data['version']; // ထုတ်လုပ်ခြင်း 1.0.0
ဇာတ်ကောင် encoding ပြ problem နာ
PHP သည် ISO-8859-1 ဇာတ်ကောင်ကိုပုံမှန်အားဖြင့်သတ်မှတ်ရန်သတ်မှတ်ထားသည်။ သို့သော် client သည် UTF-8 encoding ကိုအသုံးပြုပါကအမှိုက်ပြ problems နာများရှိနိုင်သည်။ ကွဲပြားခြားနားသော encoding methods များသည် stringing parsing အမှားများကိုဖြစ်စေနိုင်သည်။
ဖြေရှင်းချက် - 0 န်ဆောင်မှုခံယူသူနှင့်ဆာဗာသည်တူညီသောအက်ခရာ encoding ကိုအသုံးပြုကြောင်းသေချာစေပါ။ များသောအားဖြင့် UTF-8 ကိုရွေးချယ်သည်။
header('Content-Type: text/html; charset=UTF-8');
HTTP တုံ့ပြန်မှုခေါင်းစီးကိုမှန်ကန်စွာကိုင်တွယ်ခြင်းမရှိပါ Get_Client_Version_version function မှပြန်လာသော URL သည် http response headers များပါ 0 င်နိုင်သည်။ အကယ်. PHP server သည်ဤတုန့်ပြန်မှုခေါင်းဆောင်မှုကိုမှန်ကန်စွာမကိုင်တွယ်နိုင်ပါက၎င်းသည်မမှန်ကန်သည့်ခွဲခြမ်းစိတ်ဖြာရလဒ်များဖြစ်ပေါ်နိုင်သည်။
ဖြေရှင်းချက် - ဆာဗာ ကုဒ်သည် http response headers များကိုမှန်ကန်စွာကိုင်တွယ်နိုင်ကြောင်းသေချာပါစေ ။
$response = file_get_contents("https://gitbox.net/api/version?client_id=12345");
// ပြန်လာလုပ်ငန်းစဉ်JSONသို့မဟုတ်အခြား format ကိုဒေတာ
ပုံနှိပ်ခြင်းနှင့်ပြန်လာရလဒ်များကို ပုံနှိပ်ပါ ဖွံ့ဖြိုးတိုးတက်မှုအဆင့်တွင် Get_Client_Version Function ၏ပြန်လည်လုပ်ဆောင်မှု၏ရလဒ်ကိုပထမ ဦး ဆုံးထုတ်ဖော်ပြသနိုင်သည့် formating သို့မဟုတ် encoding ပြ problems နာများရှိ, မရှိစစ်ဆေးရန်ပထမ ဦး ဆုံးပုံနှိပ်ထုတ်ဝေနိုင်သည်။
$version = get_client_version();
echo $version;
debugging tools တွေကိုသုံးပြီး <br> XDebug ကဲ့သို့သော PHP Debugging Tools များကိုအသုံးပြုခြင်း XDebug သည်ပြန်လာသောအချက်အလက်များ၏အမှန်တကယ်ပုံစံနှင့် encoding ကိုကြည့်ရှုခြင်းအားဖြင့်အမှား၏အရင်းအမြစ်ကိုရှာဖွေရန်ကူညီနိုင်သည်။
API စာရွက်စာတမ်းများကိုစစ်ဆေးပါ Get_Client_Version_Version function သည်ပြင်ပ API ကိုခေါ်ပါက API စာရွက်စာတမ်းများတွင်အရေးကြီးသောပြန်လာပုံစံသို့မဟုတ် encoding ညွှန်ကြားချက်များပျောက်ဆုံးနေသေချာအောင်လုပ်ပါ။
Get_Client_Version function ကို return ရလဒ်မျိုးကွဲဖြစ်ရပ်မှန်များဖြစ်ရပ်များအတွက်အမှားအယွင်းများပြ problem နာသည်ပုံမှန်အားဖြင့် URL အမျိုးအစား, Return Respons encoding mismatch နှင့်မသင့်လျော်သော http response header header processing on encoding header processing နှင့်မသက်ဆိုင်ပါ။ encoding ကိုမှန်ကန်စွာအသုံးပြုခြင်းသည် JSON နှင့် debugging tools များကိုခွဲခြမ်းစိတ်ဖြာခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဤအမှားများကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီးဆာဆာသည် 0 န်ဆောင်မှုခံယူသူ၏အချက်အလက်များကိုမှန်ကန်စွာခွဲခြမ်းစိတ်ဖြာနိုင်သည်။
အထက်ဖော်ပြပါခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ဖြေရှင်းနည်းများမှတဆင့်ကျွန်ုပ်တို့သည် Get_Client_Version function ၏ခွဲခြမ်းစိတ်ဖြာမှုရှိအမှားအယွင်းများပြ problem နာကိုပိုမိုရှင်းလင်းစွာနေရာချထားနိုင်ပြီးကျွန်ုပ်တို့၏ PHP application သည်တည်ငြိမ်စွာလည်ပတ်နိုင်အောင်သေချာစွာဖြေရှင်းနိုင်သည်။