ディスクにキャッシュしたいオブジェクトがいくつかあります。このプロセスでは serialize() を使用します。オブジェクトには、他のオブジェクトへの参照が含まれています。非シリアル化するときに同じ実世界のオブジェクトのインスタンスが重複するため、それらもシリアル化したくありません(これは他の場所で行われます)。
オブジェクト参照を文字列に変更する方法はありますか (同じオブジェクトを参照しますが、ID によって) シリアル化して後で元に戻す前に、クラス コード内でこれを行う方法はありますか ((un)serialize ステートメントの前後ではありません)。 ?
良い:
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();