انتقل إلى محتوى الدرس

Customizing State with __serialize تخصيص البيانات المحفوظة عبر __serialize و __unserialize

أنشئ كائنات فورية عبر new class، وخزّن الكائنات بأمان عبر __serialize و__unserialize، وافحص الأصناف والدوال في وقت التشغيل.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

يوفر PHP 8 الدالتين السحريتين __serialize(): array و__unserialize(array $data): void للتحكم الدقيق في البيانات التي يتم حفظها واستعادتها.

  • تُرجع الدالة __serialize(): array مصفوفة ترابطية نظيفة تمثل حالة الكائن المراد حفظها (مع استبعاد المقابض الحية أو المفاتيح المؤقتة).
  • تستقبل الدالة __unserialize(array $data): void تلك المصفوفة الترابطية عند فك التسلسل لتعيد تعبئة خصائص الكائن.
  • فضّل دائماً الثنائي الحديث __serialize() و__unserialize() على الدالتين القديمتين __sleep() و__wakeup().

تستبعد __serialize() الخاصية المؤقتة $tempCache عند الحفظ، وتعيد __unserialize() تهيئتها بالقيمة "rebuilt".

مخطط تدفق التنفيذ العملي لقسم تخصيص البيانات المحفوظة عبر __serialize و __unserialize في لغة PHP
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";