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