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()設定現有物件的屬性,包括私有物件和受保護物件。例如: