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()设置现有对象的属性,包括私有对象和受保护对象。例如: