PHP တွင် Serialize နှင့် unray rollials ကဲ့သို့သောလုပ်ဆောင်ချက်များ (ဥပမာ Arrays သို့မဟုတ် Objects များ) ကိုသိုလှောင်ထားသည့်ပုံစံများသို့ပြောင်းရန်သို့မဟုတ်လွှဲပြောင်းနိုင်သည်။ သို့သော်ဤလုပ်ဆောင်မှုများကိုအသုံးပြုသည့်အခါအထူးသဖြင့်ရှုပ်ထွေးသောဒေတာအမျိုးအစားများပါ 0 င်သည့်အခြေအနေများတွင်ဒေတာအမျိုးအစားဆုံးရှုံးမှုပြ problem နာကိုသင်ကြုံတွေ့ရနိုင်သည်။ ဤဆောင်းပါးသည် Serialize အသုံးပြုသောအခါဒေတာအမျိုးအစားဆုံးရှုံးမှုကိုမည်သို့ရှောင်ရှားရမည်ကိုလေ့လာလိမ့်မည်။
PHP တွင် Serialize function ၏အဓိကလုပ်ဆောင်မှုသည် PHP variable များကိုသိုလှောင်ထားသောသို့မဟုတ်လွှဲပြောင်းကြိုးပုံစံများသို့ပြောင်းရန်ဖြစ်သည် ။ သို့သော်ပုံမှန်အားဖြင့် serialize မှ ပြုလုပ်သောအရာဝတ်ထုများသည်မူလအမျိုးအစားနှင့်အတန်းအစားသတင်းအချက်အလက်များကိုဆုံးရှုံးသည်။ ဥပမာအားဖြင့်, အရာဝတ်ထုတစ်ခုကို 0 န်ခံခြင်းနှင့်အရာဝတ်ထုကိုပြန်လည်ထူထောင်ရန်အတွက် unserialize ကို အသုံးပြုခြင်းကို အသုံးပြု. အရာဝတ်ထုပြောင်းလဲမှုသို့မဟုတ်အတန်းအစားကိုမှန်ကန်စွာမဖွင့်ပါက၎င်းသည်မျှော်လင့်ထားသည့်ရလဒ်များနှင့်မကိုက်ညီပါကရလဒ်ကိုဖြစ်စေနိုင်သည်။
ဒေတာအမျိုးအစားဆုံးရှုံးမှုပြ problem နာသည်များသောအားဖြင့် PHP ၏ Serialize နှင့် unserialize functions များ၏လုပ်ငန်းယန္တရားနှင့်သက်ဆိုင်သည်။ ကျွန်ုပ်တို့သည် Serialize ကို အသုံးပြုသောအခါ PHP သည်အရာဝတ်ထု၏ဂုဏ်သတ္တိများနှင့်ဒေတာများကို string format အဖြစ်ပြောင်းလဲပေးသည်။ သို့သော်အချို့သောအချက်အလက်အမျိုးအစားများ (ထိုကဲ့သို့သောအရင်းအမြစ်အမျိုးအစားများ, အမည်မသိလုပ်ဆောင်ချက်များစသကဲ့သို့) serialization စဉ်အတွင်းသတင်းအချက်အလက်ဆုံးရှုံးနိုင်ပါသည်။ အထူးသဖြင့်မတူညီသောပတ်ဝန်းကျင်သို့မဟုတ်စနစ်များကိုဖြတ်ကူးသောအခါ, deserialization ပြီးနောက်မူရင်းအမျိုးအစားကိုသင်မပြန်နိုင်သည့်အခြေအနေများကြုံတွေ့ရနိုင်သည်။
ဥပမာ URL တွင် url ပါ 0 င်သော array တစ်ခုပြုလုပ်သောအခါ, URL တွင် domain name ကိုမွမ်းမံခြင်းသို့မဟုတ်အသိအမှတ်ပြုခြင်းမပြုနိုင်ပါကဒေတာပျောက်သွားလိမ့်မည်။ အထူးသဖြင့်တတိယပါတီ APIs သို့မဟုတ် Cross-platform သယ်ယူပို့ဆောင်ရေးကိုကိုင်တွယ်သောအခါအထူးသဖြင့်ဘုံဖြစ်သည်။
$array = [
'name' => 'example',
'url' => 'http://oldsite.com/api/data'
];
// အသုံးပြု serialize
$serializedData = serialize($array);
ဒေတာအမျိုးအစားဆုံးရှုံးမှုကိုရှောင်ရှားရန် serialize သုံးသောအခါအောက်ပါနည်းဗျူဟာများကိုချမှတ်နိုင်သည်။
PHP သည် __SEEEP နှင့် __. __wakeUp မှော်နည်းလမ်းများသည် 0 န်ဆောင်မှုကို 0 မ်းနည်းခြင်းနှင့်အရာဝံ့သောအရာဝတ်ထုများကိုထိန်းသိမ်းထားသည့်အခါဒေတာရှေ့နောက်ညီညွတ်မှုကိုထိန်းသိမ်းရန်ကူညီပေးသော။
__LeEp : အရာဝတ်ထုတစ်ခုကို serialize လုပ်တဲ့အခါ, သငျသညျကို serialized ခံရဖို့လိုအပ်သည့်ဂုဏ်သတ္တိများလိုအပ်ကြောင်းကိုရွေးချယ်နိုင်ပါတယ်။
__WakeUp - အရာဝတ်ထုတစ်ခုကို deserialize လုပ်တဲ့အခါ, အရာဝတ်ထုရဲ့အခြေအနေကိုသင်ပြန်ကောင်းလိမ့်မယ်။
class MyClass {
public $property1;
public $property2;
// စိတ်ကြိုက် serialization အပြုအမူ
public function __sleep() {
return ['property1']; // သာ serialization property1
}
// စိတ်ကြိုက် deserialization အပြုအမူ
public function __wakeup() {
// ဂုဏ်သတ္တိများပြန်လည် caltiitialize
$this->property2 = 'initialized';
}
}
$object = new MyClass();
$serializedObject = serialize($object);
$unserializedObject = unserialize($serializedObject);
အချို့သောအရင်းအမြစ်များ (ဥပမာဒေတာဘေ့စ်ဆက်သွယ်မှုများ, ဖိုင်လက်ကိုင်များစသည်တို့) ကို serialized မဖြစ်နိုင်ပါ။ ဤပြ problems နာများကိုရှောင်ရှားရန်သင်သည် serialized အရင်းအမြစ်များကိုကိုယ်တိုင်စစ်ထုတ်ယူခြင်းသို့မဟုတ် serializing ကိုကျော်သွားနိုင်သည်။
$array = [
'dbConnection' => $dbConnection, // ယူဆချက် dbConnection ၎င်းသည်မငြိမ်မသက်ဖြစ်စေသောအရင်းအမြစ်ဖြစ်သည်
'url' => 'http://gitbox.net/api/data'
];
// ကိုယ်ရေးကိုယ်တာမဟုတ်သောအရင်းအမြစ်များကိုကိုယ်တိုင်ဖယ်ရှားပါ
unset($array['dbConnection']);
$serializedData = serialize($array);
အကယ်. သင် Resialization အတွင်းရှိ URL များကိုအသုံးပြုပါကဤ URLs များ၏ဒိုမိန်းများ၏အမည်များသည်ပြောင်းလဲနိုင်သည်ဆိုလျှင် URANES ၏ဒိုမိန်းအမည်များကို၎င်းတို့တသမတ်တည်းဖြစ်ကြောင်းသေချာစေရန်ဆိုင်းအင်မဆိုမီမှတ်တမ်းများကိုပြုပြင်နိုင်သည်။ ဥပမာအားဖြင့် URL ၏ဒိုမိန်းအမည်ကိုအစားထိုးရန် Domain Name သည် domain name ကိုပြောင်းလဲရန် Domain Name ကိုပြောင်းလဲရန်အတွက် strow_replace function ကိုသုံးနိုင်သည် ။
$array = [
'name' => 'example',
'url' => 'http://oldsite.com/api/data'
];
// ပြန်လည်စစ်ဆေးကြည့်ရှု URL ဒိုမိန်းအမည်
$array['url'] = str_replace('oldsite.com', 'gitbox.net', $array['url']);
$serializedData = serialize($array);
အချို့သောဖြစ်ရပ်များတွင်ဒေတာသိုလှောင်မှုသို့မဟုတ်လွှဲပြောင်းခြင်းအတွက် JSON format ကိုအသုံးပြုရန်အတွက်အထူးသဖြင့် PHP - တိကျသောအရာဝတ်ထုအမျိုးအစားသို့မဟုတ်အရင်းအမြစ်များတွင်အချက်အလက်ဖွဲ့စည်းပုံတွင်အရင်းအမြစ်မရှိပါ။ JSON format သည် Serialization ကြောင့်ဖြစ်သည့်ပြ problems နာများကိုပိုမိုကောင်းမွန်အောင်ရှောင်ရှားနိုင်ပြီးပိုမိုကျယ်ပြန့်သောပလက်ဖောင်းသွယ်ဝိုက်ခြင်း။
$array = [
'name' => 'example',
'url' => 'http://gitbox.net/api/data'
];
// အသုံးပြု JSON ပြန်လည်နေရာချ serialize
$jsonData = json_encode($array);
serialize နှင့် unserialize များသည် ဖြစ်နိုင်ချေများစွာတွင်အလွန်အသုံးဝင်သော်လည်းအချက်အလက်အမျိုးအစားများကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါအသေးစိတ်အရာဝတ်ထုအမျိုးအစားများနှင့်သယံဇာတအမျိုးအစားများတွင်အချက်အလက်အမျိုးအစားများကိုကိုင်တွယ်သောအခါပြ problems နာအချို့ကိုကြုံတွေ့ရနိုင်သည်။ __SELEEP နှင့် __WAKUP နည်းစနစ်များကိုအသုံးပြုခြင်းအားဖြင့် url domain names များကိုအသုံးပြုခြင်းသို့မဟုတ် JSON format များကိုအသုံးပြုခြင်း,