var exporter
v7.2.0
El componente VarExporter proporciona varias herramientas para lidiar con el estado interno de los objetos:
VarExporter::export()
permite exportar cualquier estructura de datos PHP serializable a código PHP simple. Al hacerlo, conserva toda la semántica asociada con el mecanismo de serialización de PHP ( __wakeup
, __sleep
, Serializable
, __serialize
, __unserialize
);Instantiator::instantiate()
crea un objeto y establece sus propiedades sin llamar a su constructor ni a ningún otro método;Hydrator::hydrate()
puede establecer las propiedades de un objeto existente;Lazy*Trait
puede hacer que una clase se comporte como un fantasma de carga diferida o un proxy virtual. La razón para usar VarExporter::export()
vs serialize()
o igbinary es el rendimiento: gracias a OPcache, el código resultante es significativamente más rápido y más eficiente en memoria que usar unserialize()
o igbinary_unserialize()
.
A diferencia de var_export()
, esto funciona con cualquier valor PHP serializable.
También proporciona algunas mejoras sobre var_export()
/ serialize()
:
r
o n
en los datos;ClassNotFoundException
en lugar de no ser serializadas en objetos PHP_Incomplete_Class
;SplObjectStorage
, ArrayObject
o ArrayIterator
;Reflection*
, IteratorIterator
y RecursiveIteratorIterator
generan una excepción cuando se serializan (su versión no serializada está rota de todos modos, consulte https://bugs.php.net/76737). Instantiator::instantiate($class)
crea un objeto de la clase dada sin llamar a su constructor ni a ningún otro método.
Hydrator::hydrate()
establece las propiedades de un objeto existente, incluidos los privados y protegidos. Por ejemplo: