Ich merke, dass ich Array-Inhalt verliere, wenn ich ein einfaches Objekt serialisiere, und nehme an, dass ich das Array irgendwie neu schreibe. Wie lässt sich der Code richtig strukturieren, so dass Daten von ursprünglich initiierten Objekten erhalten bleiben?Verhindern, dass Objekte beim Serialisieren und Deserialisieren überschrieben werden
<?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);
?>
Ausgang:
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] =>)
Versuchen Implementierung 'Serializable' Schnittstelle zu' MyClass'. – Meathanjay
Die Frage sieht so aus http://stackoverflow.com/questions/5161065/object-serialization-sleep –