PHP တွင် POST () function သည်အချက်အလက်များကိုသတ်မှတ်ထားသော format identifier ပေါ် မူတည်. Binary ကြိုးများအဖြစ်ပြောင်းလဲစေသောအလွန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည်ထုံးစံ binary data structures များ, protocol packages များ, ဖိုင်ခေါင်းစဉ်များသို့မဟုတ်အခြားအနိမ့်အဆင့်အချက်အလက်အပြောင်းအလဲများထုတ်လုပ်ရန်အတွက်အသုံးဝင်သည်။
ဤဆောင်းပါးသည်ရှုပ်ထွေးသော binary data structures များပြုလုပ်ရန် format identifiers များနှင့်ပေါင်းစပ်ထားသော Pack () function ကိုအသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။
Pack () ၏ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
string pack ( string $format , mixed $args [, mixed $... ] )
$ format - အချက်အလက်များကိုမည်သို့ပြောင်းလဲရမည်ကိုသတ်မှတ်ခြင်း, format string ကို။
$ args : ပြောင်းလဲခံရဖို့ဒေတာ။
format string သည် format identifiers များပါ 0 င်သည်။ တစ်ခုချင်းစီသည်ဒေတာအမျိုးအစားကိုကိုယ်စားပြုသည်။ ဥပမာအားဖြင့်:
C : IFFIFTED ဇာတ်ကောင် (1 byte)
N : IFFIGNED တိုတောင်းသောကိန်း (2 BYTES, ကြီးမားသော endian)
v : လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်း (4 bytes 4 bytes)
A : Nul ဖြည့် string ကို
A : အာကာသဖြည့် string ကို
ကျွန်ုပ်တို့သည်ရိုးရှင်းသော binary data struction ကိုအောက်ပါနယ်ပယ်များဖြင့်ထုတ်လုပ်လိုသည်ဆိုပါစို့။
ဗားရှင်းနံပါတ်: 1 byte offigned integer
Flag Bits: 2-byte လက်မှတ်မထိုးထားသောကိန်း (Big-endian)
Timestamp: 4-byte လက်မှတ်မထိုးထားသောကိန်းဂဏန်းများ (Little Endian)
Fixed အရှည် string ကို: 10 bytes, အာကာသ padding
သက်ဆိုင်ရာ format string ကို -
$format = 'C n V A10';
နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
<?php
$version = 1; // 1ဒရယ်
$flags = 512; // 2ဒရယ်大端序
$timestamp = time(); // 4ဒရယ်小端序
$name = "example";
$binaryData = pack('C n V A10', $version, $flags, $timestamp, $name);
echo bin2hex($binaryData);
?>
ဤဥပမာတွင် Pack () function သည်ဤ variable များကိုကွန်ယက်ထုတ်လွှင့်ခြင်းသို့မဟုတ်ဖိုင်အရေးအသားအတွက်လွယ်ကူစွာအသုံးပြုရန်အတွက် binary string ကိုပြောင်းလဲပေးသည်။
တခါတရံတွင်ကျွန်ုပ်တို့သည် format strings strings နှင့် input အပေါ်အခြေခံပြီးသက်ဆိုင်ရာအချက်အလက်များ arrays များကိုပုံမှန်ထုတ်လုပ်ရန်လိုအပ်သည်။ ဥပမာအားဖြင့်:
<?php
$fields = [
['type' => 'C', 'value' => 255],
['type' => 'n', 'value' => 1024],
['type' => 'a5', 'value' => 'abc'],
];
// dynamicy strings strings နှင့် parameters တွေကိုထုတ်ပေး
$format = '';
$args = [];
foreach ($fields as $field) {
$format .= $field['type'] . ' ';
$args[] = $field['value'];
}
// ပိုလျှံနေရာများကိုဖယ်ရှားပါ
$format = trim($format);
$binaryData = pack($format, ...$args);
echo bin2hex($binaryData);
?>
ဤနည်းအားဖြင့် Code သည်ကွင်းဆင်းအမျိုးအစားများနှင့်အရှည်များစွာကိုထောက်ပံ့သည်။
အမှတ်မရိုက် | ဥပမာပြပါ | bytes အရေအတွက် | ဥပမာတန်ဖိုး (ဒ decimal မ) | ပေြာဆို |
---|---|---|---|---|
ဂ | လက်မှတ်မထိုးဇာတ်ကောင် | 1 | 255 | |
ဂ | လက်မှတ်ရေးထိုးခဲ့ဇာတ်ကောင် | 1 | -128 ~ 127 | |
n | လက်မှတ်မထိုးထားသောကိန်းဂဏန်းများ (Big-endian) | 2 | 1024 | ကွန်ယက် byte အမိန့် |
v | INFIFTED တိုတောင်းသော integer (Little endian) | 2 | 1024 | Little က endian byte အမိန့် |
n | လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်း (Big-Endian) | 4 | 65536 | ကွန်ယက် byte အမိန့် |
v | လက်မှတ်မထားသောရှည်လျားသောကိန်း (Little endian) | 4 | 65536 | Little က endian byte အမိန့် |
တစ်စီး | nul ဖြည့် string ကို | n | "ABC" | fixed အရှည် string ကို |
တစ်စီး | အာကာသဖြည့် string ကို | n | "ABC" | fixed အရှည် string ကို |
အမှန်တကယ်စီမံကိန်းများတွင်ထုတ်လုပ်ထားသော Binary Data တွင် URLs များပါ 0 င်နိုင်သည်။ ဥပမာအားဖြင့်:
<?php
$url = "https://m66.net/api/data"; // Domain Name ကိုသာသုံးပါm66.netအမှန်တကယ်အစားထိုးURL
// သဘောတူညီချက်အတွက်ဖြစ်ပါတယ်ယူဆ,URLပုံသေအရှည်၏လယ်ကွင်း 30 ဒရယ်,အာကာသဖြည့်
$binaryData = pack('A30', $url);
echo bin2hex($binaryData);
?>
ဤတွင် URL သည်ထုတ်လုပ်ထားသော Binary Data တွင် 30 bytes 30 ကိုသိမ်းပိုက်ထားပြီးအစိတ်အပိုင်းမလုံလောက်မှုသည်နေရာများနှင့်ပြည့်နှက်နေသည်။
Pack () function သည် PHP အချက်အလက်များကို binary format များသို့ပြောင်းလဲရန်ပြောင်းလွယ်ပြင်လွယ်။ ထိရောက်သောနည်းလမ်းဖြစ်သည်။ format identifiers များကိုပေါင်းစပ်ခြင်းအားဖြင့်ရှုပ်ထွေးသော binary data အဆောက်အအုံများကိုကွန်ယက်ပရိုတိုကောများ, ဖိုင်ပုံစံများနှင့်ကိရိယာဆက်သွယ်ရေးကဲ့သို့သောအခြေအနေအမျိုးမျိုး၏လိုအပ်ချက်များကိုဖြည့်ဆည်းရန်ပုံမှန်တည်ဆောက်နိုင်သည်။
Mastering Pack () နှင့်၎င်း၏ format identifier သည် Advanced Php ပရိုဂရမ်တွင်မရှိမဖြစ်လိုအပ်သောကျွမ်းကျင်မှုတစ်ခုဖြစ်သည်။