色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

marshal php

林子帆1年前6瀏覽0評論
< p >PHP語言的序列化是一項非常重要的功能,他可以幫助我們將PHP對象轉化為一些字節串或者是返回字符串。尤其在網絡傳輸時,將對象序列化再傳輸再反序列化,便于在網絡傳輸時快速傳遞數據,并保存到磁盤上。< p >由于PHP可以與許多類型相關的數據存儲(如XML,JSON,YAML等)進行交互,但序列化和反序列化還是最快的,不需要類型聲明,解析代碼,或找到適當的類文件。< p >PHP提供了一個名為marshal的函數,可以幫助我們完成序列化和反序列化。
$member = array('liaoli', 'password123');
$str = 'liaoli' . chr(0) . 'password123' . chr(0);
$val = msgpack_unpack($str);
var_dump($val);
< p >我們可以使用marshal的語法將PHP對象轉換為字符串。例如,我們可以將數組轉換為string,則它將表示為以下形式:
$member = array('liaoli', 'password123');
$str = marshal.pack($member);
echo $str . "\n";
< p >我們還可以使用marshal來解碼它們。例如,我們可以將序列化后的字符串轉換為PHP對象,如下所示:

$packed_string = "x50x0pxFE\x00\x00\x00\x03keyx01x00x00x00\x06valuedone.";
$unpacked = msgpack_unpack($packed_string);
var_dump($unpacked);
< p >此方法返回以下結果:

$packed_string = "x50x0pxFE\x00\x00\x00\x03keyx01x00x00x00\x06valuedone.";
[ 'key' => 'value', ]
< p >我們還可以將對象轉換為二進制并從它們中讀取數據。請查看此與PyObjectMarshal.cpp相關的文檔,并從中了解有關該過程的更多信息。< p >此外,當前的PHP規范及PHP許多現代框架,默認情況下使用PHP序列化。他們可以跨越多個代碼庫中傳遞對象,因為序列化函數通過某個字符串數據表示法提供了唯一標識符。
class MyClass {
 public $foo;
 public function __construct($foo) {
$this->foo = $foo;
 }
}
$obj = new MyClass('hello');
var_dump($obj);
$serialized = serialize($obj);
var_dump($serialized);
$restored = unserialize($serialized);
var_dump($restored);
< p >上述代碼將生成以下結果:

class MyClass#1 (1) {
 public $foo =>
string(5) "hello"
}
string(47) "O:7:"MyClass":1:{s:3:"foo";s:5:"hello";}"
object(MyClass)#2 (1) {
 ["foo"]=>string(5) "hello"
}
< p >總之,PHP的序列化功能使我們更容易在PHP代碼中操作對象。Marshal提供了一些額外的功能,可以幫助我們快速進行序列化和反序列化。但默認的PHP序列化被廣泛使用。使用哪種序列化形式應由您的特定要求和目標環境決定。