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() يعين خصائص الكائن الموجود، بما في ذلك الكائنات الخاصة والمحمية. على سبيل المثال: