PHP إزالة كائن مرجع قبل التسلسل، واستعادة بعد
-
19-09-2019 - |
سؤال
لدي بعض الكائنات التي أرغب في التخزين المؤقت على القرص. يمكنني استخدام التسلسل () في هذه العملية. تحتوي الكائنات على بعض المراجع إلى كائنات أخرى. لا أريد أن يتم تسلسل تلك المسلسل أيضا (يتم ذلك في مكان آخر) لأنه سيعطيني مثيلات مكررة لنفس كائن العالم الحقيقي عندما غير ميول.
هل هناك طريقة لتغيير مراجع الكائنات إلى السلاسل (بالإشارة إلى نفس الكائنات، ولكن عن طريق المعرف) قبل تسلسل وتغييرها مرة أخرى بعد، والقيام بذلك داخل كود الفئة (ليس قبل وبعد بيانات التسلسل (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();
المحلول
أعتقد أنك تبحث عن __sleep () و __wakeup ().
نصائح أخرى
ملاحظة إلى الذات: تحقق مستندات أولا
http://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.sleep.
نعم. القي نظرة على __sleep و __wakeup.
لا تنتمي إلى StackOverflow