var exporter
v7.2.0
VarExporter 组件提供了各种工具来处理对象的内部状态:
VarExporter::export()
允许将任何可序列化的 PHP 数据结构导出为纯 PHP 代码。这样做的同时,它保留了与 PHP 序列化机制相关的所有语义( __wakeup
、 __sleep
、 Serializable
、 __serialize
、 __unserialize
);Instantiator::instantiate()
创建一个对象并设置其属性,而不调用其构造函数或任何其他方法;Hydrator::hydrate()
可以设置现有对象的属性;Lazy*Trait
可以使类充当延迟加载幽灵或虚拟代理。 使用VarExporter::export()
与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()
设置现有对象的属性,包括私有对象和受保护对象。例如: