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

Serializing Objects with serialize تحويل الكائنات إلى نص قابل للتخزين بـ serialize

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

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

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

على عكس json_encode() التي تفقد اسم صنف الكائن وخصائصه الخاصة، تحوّل الدالة serialize() الكائن إلى نص قابل للتخزين يحتفظ بنوع الصنف وحالة خصائصه كاملة.

  • ترمّز الدالة serialize($object) اسم الصنف وجميع الخصائص العامة والمحمية والخاصة في سلسلة نصية مهيكلة.
  • تعيد الدالة unserialize($payload) بناء الكائن الحي بنفس حالته دون إعادة استدعاء __construct().
  • تُستخدم هذه الآلية بكثرة لتخزين كائنات المهام الخلفية (Queued Jobs) في Redis أو قاعدة البيانات.

تحفظ serialize() كلاً من الخاصية العامة $task والخاصة $retries، وتستعيد unserialize() الكائن QueuedJob بالكامل.

PHP
<?php
class QueuedJob {
    public function __construct(public string $task, private int $retries) {}
    public function info(): string { return "{$this->task} (tries={$this->retries})"; }
}
$raw = serialize(new QueuedJob("SendInvoicePdf", 3));
$restored = unserialize($raw);
echo $restored->info() . "\n";