シンプルなオブジェクトをシリアライズするときに配列の内容が失われていることに気づいています。何とか配列を書き換えていると仮定します。どのようにしてコードを構造化して、最初に開始したオブジェクトからのデータ保存を可能にするか?シリアライズとシリアライズ解除時にオブジェクトの書き換えを防止する
<?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] =>)
MyClass' 'へ' Serializable'インタフェースを実装してみます。 – Meathanjay
質問はこのように見えます。http://stackoverflow.com/questions/5161065/object-serialization-sleep –