var exporter
v7.2.0
ส่วนประกอบ VarExporter มีเครื่องมือต่างๆ เพื่อจัดการกับสถานะภายในของออบเจ็กต์:
VarExporter::export()
อนุญาตให้ส่งออกโครงสร้างข้อมูล PHP ที่สามารถซีเรียลไลซ์ได้ไปยังโค้ด PHP ธรรมดา ในขณะที่ทำเช่นนั้น มันจะรักษาความหมายทั้งหมดที่เกี่ยวข้องกับกลไกการทำให้เป็นอนุกรมของ PHP ( __wakeup
, __sleep
, Serializable
, __serialize
, __unserialize
);Instantiator::instantiate()
สร้างวัตถุและตั้งค่าคุณสมบัติโดยไม่ต้องเรียกตัวสร้างหรือวิธีอื่นใดHydrator::hydrate()
สามารถกำหนดคุณสมบัติของวัตถุที่มีอยู่ได้Lazy*Trait
สามารถทำให้คลาสทำงานเป็น ghost-loading ghost หรือพร็อกซีเสมือนได้ เหตุผลในการใช้ 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)
สร้างวัตถุของคลาสที่กำหนดโดยไม่ต้องเรียก Constructor หรือวิธีการอื่นใด
Hydrator::hydrate()
กำหนดคุณสมบัติของวัตถุที่มีอยู่ รวมถึงวัตถุส่วนตัวและวัตถุที่ได้รับการป้องกัน ตัวอย่างเช่น: