شرح صفوف ومحتوى الفقرة
يوفر PHP 8 الدالتين السحريتين __serialize(): array و__unserialize(array $data): void للتحكم الدقيق في البيانات التي يتم حفظها واستعادتها.
- تُرجع الدالة
__serialize(): arrayمصفوفة ترابطية نظيفة تمثل حالة الكائن المراد حفظها (مع استبعاد المقابض الحية أو المفاتيح المؤقتة). - تستقبل الدالة
__unserialize(array $data): voidتلك المصفوفة الترابطية عند فك التسلسل لتعيد تعبئة خصائص الكائن. - فضّل دائماً الثنائي الحديث
__serialize()و__unserialize()على الدالتين القديمتين__sleep()و__wakeup().
تستبعد __serialize() الخاصية المؤقتة $tempCache عند الحفظ، وتعيد __unserialize() تهيئتها بالقيمة "rebuilt".
PHP
<?php
class SessionToken {
public function __construct(public string $user, private string $tempCache = "skip") {}
public function __serialize(): array { return ["user" => $this->user]; }
public function __unserialize(array $data): void {
$this->user = $data["user"];
$this->tempCache = "rebuilt";
}
public function status(): string { return "{$this->user}:{$this->tempCache}"; }
}
$tok = unserialize(serialize(new SessionToken("admin")));
echo $tok->status() . "\n";