PHP တွင် Serialize function ကို PHP variable ကို php variable တစ်ခုကို string format တစ်ခုအဖြစ်သိမ်းဆည်းရန်သို့မဟုတ်လွှဲပြောင်းနိုင်သည်။ ဤလုပ်ဆောင်မှုသည်အချက်အလက်များ, အရာဝတ်ထုများ, ကြိုးများ, ကိန်းများ,
အရင်းအမြစ်အမျိုးအစားများသည် PHP တွင်ပြင်ပအရင်းအမြစ်များကိုရည်ညွှန်းသည်။ ၎င်းသည် Systems များ, ဒေတာဘေ့စ်ဆက်သွယ်မှုများသို့မဟုတ်ဆံပင်ကောက်ကောက်များကဲ့သို့သောအခြားပရိုဂရမ်များနှင့်အပြန်အလှန်ဆက်သွယ်မှုများကိုကိုယ်စားပြုသည်။ ဤအရင်းအမြစ်များသည်များသောအားဖြင့်စနစ်များ (သို့) ပြင်ပလျှောက်လွှာများကိုအများအားဖြင့်ရည်ညွှန်းသည်ဆိုပါစို့, ထို့ကြောင့်ဖိုင်အမျိုးအစားများကဲ့သို့သောအရင်းအမြစ်များအမျိုးအစားများကိုဆိုင်းငံ့ထားသည့်အခါသင်ပိုမိုသတိထားရန်လိုအပ်သည်။
အရင်းအမြစ်အမျိုးအစားတွင် PHP script လည်ပတ်ပြီးနောက်ပျောက်ကွယ်သွားနိုင်သောပြင်ပအရင်းအမြစ်တစ်ခုအတွက် pointer တစ်ခုပါရှိသည်။ ထို့ကြောင့် PHP သည် serialized အရင်းအမြစ်များကိုစွန့်ခွာသောအခါတရားဝင်အရင်းအမြစ်များကိုဆက်လက်တည်ရှိနေသည်ကိုမခံနိုင်ပါ။ ဥပမာအားဖြင့်ဖိုင်လက်ကိုင်သည် operating system ရှိ Open file တစ်ခုသို့ဖိုင်လက်ကိုင်အချက်များအချက်များဖြစ်သည်။ ဤဖိုင်လက်ကိုင်သည် serialization စဉ်အတွင်းဖိုင်နှင့်အမှန်တကယ်ဆက်သွယ်မှုကိုရှုံးနိမ့်ပြီး deserialization စဉ်အတွင်းဖိုင်ကိုပြန်လည်ဖွင့်လှစ်နိုင်မည်မဟုတ်ချေ။
အရင်းအမြစ်များကိုမှန်ကန်စွာကိုင်တွယ်ဖြေရှင်းရန်အသုံးအများဆုံးနည်းလမ်းနှစ်မျိုးရှိသည်။ သယံဇာတအမျိုးအစားများကိုလျစ်လျူရှုပါသို့မဟုတ်ဆိုင်းငံ့ထားသည့်အခါ၎င်းတို့ကိုကိုယ်တိုင်လုပ်ပါ။
အလွယ်ကူဆုံးနည်းလမ်းမှာအရင်းအမြစ်အမျိုးအစားများကိုဆိုင်းငံ့ထားခြင်းကိုရှောင်ရှားရန်ဖြစ်သည်။ ဖိုင်တွဲများကိုကြိုးများအဖြစ်သိုလှောင်ထားသည့်သို့မဟုတ်ဖိုင်လက်ကိုင်အစားဖိုင်လမ်းကြောင်းကိုအသုံးပြုခြင်းကဲ့သို့သောအရင်းအမြစ်များကိုအခြားဒေတာတည်ဆောက်ပုံများဖြင့်အစားထိုးခြင်းဖြင့်ပြုလုပ်နိုင်သည်။ deserialization စဉ်အတွင်းသင်သည်ဖိုင်ကိုပြန်ဖွင့်ခြင်းသို့မဟုတ်အရင်းအမြစ်အသစ်တစ်ခုဖန်တီးနိုင်သည်။
နမူနာကုဒ်:
// ဖိုင်လက်ကိုင်ဖိုင်လမ်းကြောင်းသို့ပြောင်းပါ
$file = fopen('/path/to/file.txt', 'r');
$data = ['file' => '/path/to/file.txt']; // အရင်းအမြစ်များအစားလမ်းကြောင်းများကိုသုံးပါ
// ဒေတာ Serialize
$serializedData = serialize($data);
// 反ဒေတာ Serialize
$unserializedData = unserialize($serializedData);
// ဖိုင်လက်ကိုင်ပြန်ဖွင့်ပါ
$fileHandle = fopen($unserializedData['file'], 'r');
ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည်ဖိုင်လက်ကိုင်ကိုဖိုင်လမ်းကြောင်းသို့ပြောင်းပြီး serialization စဉ်အတွင်းအရင်းအမြစ်အမျိုးအစားမပါ 0 င်ပါ။ deserialization ပြီးနောက်ကျွန်ုပ်တို့သည်ဖိုင်ကိုနောက်တစ်ခေါက်ပြန်ဖွင့ ်. မူရင်းစစ်ဆင်ရေးကိုပြန်လည်ထူထောင်နိုင်သည်။
အကယ်. သင်သည်အရင်းအမြစ်များအမျိုးအစားများပါ 0 င်သောရှုပ်ထွေးသောအရာဝတ်ထုများကို serialize လုပ်ရန်လိုအပ်ပါက __SEEEP နှင့် __WAKUP မှော်နည်းလမ်းများအားအကောင်အထည်ဖော်ခြင်းဖြင့် serialization နှင့် deserialization အပြုအမူများကိုစိတ်ကြိုက်ပြုလုပ်နိုင်သည်။ ၎င်းသည်သယံဇာတအရင်းအမြစ်များကိုဆိုင်းငံ့ထားစဉ်သို့မဟုတ်အခြား serializable formatats များဖြင့်အစားထိုးရန်ခွင့်ပြုရန်သို့မဟုတ်အခြား serializable formatats များဖြင့်အစားထိုးရန်သင့်အားခွင့်ပြုသည်။ ထို့နောက် deserialization စဉ်မူလအရင်းအမြစ်အမျိုးအစားသို့ပြန်ယူပါ။
နမူနာကုဒ်:
class FileHandler
{
private $file;
public function __construct($filePath)
{
$this->file = fopen($filePath, 'r');
}
// စိတ်ကြိုက် serialization နည်းလမ်း
public function __sleep()
{
// သာဖိုင်လမ်းကြောင်းများသာ serialize,ဖိုင်အရင်းအမြစ်များကိုမ
return ['filePath'];
}
// စိတ်ကြိုက် deserialization နည်းလမ်း
public function __wakeup()
{
// deserialization အခါဖိုင်ကိုပြန်ဖွင့်
$this->file = fopen($this->filePath, 'r');
}
}
// အရာဝတ်ထုတစ်ခုဖန်တီးပြီး၎င်းကို serialize လုပ်ပါ
$fileHandler = new FileHandler('/path/to/file.txt');
$serializedFileHandler = serialize($fileHandler);
// ဖိုင်လက်ကိုင်များကို deserialize နှင့် restore
$unserializedFileHandler = unserialize($serializedFileHandler);
ဤဥပမာတွင်ကျွန်ုပ်တို့သည် __SLEEP နည်းလမ်းရှိဖိုင်လက်ကိုင်များကိုတိုက်ရိုက်ဆိုင်းငံ့ထားခြင်းကိုရှောင်ရှားပြီးဖိုင်လမ်းကြောင်းကိုသာဆက်လက်ထိန်းသိမ်းထားသည်။ __wakeup နည်းလမ်းတွင်ဖိုင်ကိုပြန်လည်ဖွင့်ပြီးဖိုင်လက်ကိုင်ကိုပြန်ဖွင့်သည်။
အချို့ဖြစ်ရပ်များတွင်အရင်းအမြစ်များအမျိုးအစားများ (ဖိုင်လက်ကိုင်များကဲ့သို့) သည်အဝေးမှ URL များကိုကိုယ်စားပြုနိုင်သည်။ အရင်းအမြစ်တစ်ခုလုံးကိုဆွဲဆောင်မည့်အစားဤ URL များကို string များအဖြစ်သိုလှောင်သိမ်းဆည်းရန်ရွေးချယ်နိုင်သည်။
ဥပမာအားဖြင့်, သင့်တွင်ဖိုင်တွဲတစ်ခုတွင်ဖိုင်တွဲတစ်ခုတွင်သက်ဆိုင်ရာ URL နှင့် အစားထိုး. ဝေးလံခေါင်ဖျားသောဖိုင်ကိုပြန်လည်ရယူနိုင်သည့်ဝေးလံခေါင်သီသောဖိုင်ကိုပြန်လည်ရယူနိုင်သည့်ဝေးလံသောဖိုင်ကိုညွှန်ပြသည့်ဖိုင်လက်ကိုင်တစ်ခုရှိသည်ဆိုပါစို့။
နမူနာကုဒ်:
$fileUrl = 'http://gitbox.net/path/to/file.txt'; // အသုံးပြု URL ဖိုင်လက်ကိုင်အစား
// ဖိုင်များကို serialize URL
$serializedFileUrl = serialize(['fileUrl' => $fileUrl]);
// 反ဖိုင်များကို serialize URL
$unserializedFileUrl = unserialize($serializedFileUrl);
// deserialization အခါ,သင်လုပ်နိုင်သည် URL ဖိုင်များကိုရယူပါသို့မဟုတ်အခြားစစ်ဆင်ရေးလုပ်ဆောင်ပါ
echo "The file URL is: " . $unserializedFileUrl['fileUrl'];
ဤနေရာတွင်ကျွန်ုပ်တို့သည် URL string ကို serialized data ထဲတွင်သိမ်းဆည်းထားပြီး deserialized သည့်အခါထို URL ကိုပြန်ယူပါ။ ၎င်းသည်ဖိုင်အမျိုးအစားလက်ကိုင်များကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုရှောင်ရှားနိုင်ပြီးလိုအပ်သောသတင်းအချက်အလက်များကိုသိုလှောင်ခြင်းနှင့်လွှဲပြောင်းခြင်းများပြုလုပ်နေဆဲဖြစ်သည်။
PHP ၏ serialize function ကိုအသုံးပြုသောအခါသင်သည်အရင်းအမြစ်များအမျိုးအစားများကိုကိုင်တွယ်သည့်အခါသယံဇာတများကိုကိုင်တွယ်သောအခါသင်ပိုမိုသတိထားရန်လိုအပ်သည်။ သယံဇာတများကိုတိုက်ရိုက် 0 န်ဆောင်မှုပေးခြင်းသည် deserialization အတွင်း၌ခန့်မှန်းရခက်သည့်အပြုအမူများကိုတိုက်ရိုက်ဖြစ်စေနိုင်သည်။ အကောင်းဆုံးအလေ့အကျင့်မှာအရင်းအမြစ်များကို 0 န်ဆောင်မှုပေးခြင်းသို့မဟုတ်စိတ်ကြိုက် serialization နှင့် deserialization နည်းလမ်းများမှတဆင့်လုပ်ဆောင်ရန်ဖြစ်သည်။ ဤနည်းလမ်းများမှတစ်ဆင့် serialization နှင့် deserialization လုပ်ငန်းစဉ်အတွင်းစနစ်အရင်းအမြစ်များကိုစနစ်တကျပြုပြင်ပြီးပြန်လည်တည်ဆောက်ရန်သေချာစေနိုင်သည်။