我有一些希望在磁盤上緩存的對象。我在這個過程中使用了serialize()。這些對象包含對其他對象的一些引用。我不希望這些序列化(在其他地方完成),因爲它會在反序列化時給我同一現實世界對象的重複實例。PHP在序列化之前刪除對象引用,在
有沒有一種方法可以在序列化並將它們更改回來之前將對象引用更改爲字符串(引用相同的對象,但是由ID),並在類代碼內部執行此操作(不是在(un )序列化語句)?
好:
class TheStuff {
private $otherThing;
private function __yeahDudeDoThisOnSerialize() {
$this->otherThing = $this->otherThing->name;
}
private function __viceVersa() {
$this->otherThing = get_thing_by_name($this->otherThing);
}
}
serialize($someStuff);
壞:
class TheStuff {
private $otherThing;
public function yeahDudeDoThisOnSerialize() {
$this->otherThing = $this->otherThing->name;
}
public function viceVersa() {
$this->otherThing = get_thing_by_name($this->otherThing);
}
}
$someStuff->yeahDudeDoThisOnSerialize();
serialize($someStuff);
$someStuff->viceVersa();