var exporter
v7.2.0
يوفر مكون VarExporter أدوات متنوعة للتعامل مع الحالة الداخلية للكائنات:
VarExporter::export()
بتصدير أي بنية بيانات PHP قابلة للتسلسل إلى كود PHP عادي. أثناء القيام بذلك، فإنه يحافظ على جميع الدلالات المرتبطة بآلية التسلسل في PHP ( __wakeup
, __sleep
, Serializable
, __serialize
, __unserialize
);Instantiator::instantiate()
بإنشاء كائن وتعيين خصائصه دون استدعاء منشئه أو أي طرق أخرى؛Hydrator::hydrate()
تعيين خصائص كائن موجود؛Lazy*Trait
أن تجعل الفصل يتصرف كشبح كسول التحميل أو وكيل افتراضي. السبب وراء استخدام VarExporter::export()
vs serialize()
أو igbinary هو الأداء: بفضل OPcache، يكون الكود الناتج أسرع بكثير وأكثر كفاءة في الذاكرة من استخدام unserialize()
أو igbinary_unserialize()
.
على عكس var_export()
، يعمل هذا على أي قيمة PHP قابلة للتسلسل.
كما يوفر أيضًا بعض التحسينات على var_export()
/ serialize()
:
r
أو n
في البيانات؛ClassNotFoundException
بدلاً من إلغاء تسلسلها إلى كائنات PHP_Incomplete_Class
؛SplObjectStorage
أو ArrayObject
أو ArrayIterator
؛Reflection*
و IteratorIterator
و RecursiveIteratorIterator
استثناءً عند إجراء تسلسل (النسخة غير التسلسلية الخاصة بها معطلة على أي حال، راجع https://bugs.php.net/76737). Instantiator::instantiate($class)
بإنشاء كائن من الفئة المحددة دون استدعاء منشئه أو أي طرق أخرى.
Hydrator::hydrate()
يعين خصائص الكائن الموجود، بما في ذلك الكائنات الخاصة والمحمية. على سبيل المثال: