【发布时间】:2016-04-20 04:58:45
【问题描述】:
我注意到在序列化一个简单对象时我丢失了数组内容,并且我假设我正在以某种方式重写数组。如何正确构建代码以允许从最初启动的对象中保存数据?
<?php
class MyClass {
private $array;
function __construct($array) {
$this->array = $array;
}
public function __sleep() {
return $this->array;
}
}
$array = array(
'i1' => 1,
'i2' => 2,
'i3' => 3,
'i4' => 4
);
$obj = new MyClass($array);
$ser = serialize($obj);
$des = unserialize($ser);
print_r($obj);
echo '<br><br>';
print_r($ser);
echo '<br><br>';
print_r($des);
?>
输出:
MyClass Object ( [array:MyClass:private] => Array ( [i1] => 1 [i2] => 2 [i3] => 3 [i4] => 4 ) )
O:7:"MyClass":4:{s:1:"1";N;s:1:"2";R:2;s:1:"3";R:2;s:1:"4";R:2;}
MyClass Object ( [array:MyClass:private] => [1] => [2] => [3] => [4] => )
【问题讨论】:
-
尝试实现
Serializable接口到MyClass。
标签: php serialization