O componente VarExporter fornece diversas ferramentas para lidar com o estado interno dos objetos:
VarExporter::export()
permite exportar qualquer estrutura de dados PHP serializável para código PHP simples. Ao fazer isso, preserva toda a semântica associada ao mecanismo de serialização do PHP ( __wakeup
, __sleep
, Serializable
, __serialize
, __unserialize
);Instantiator::instantiate()
cria um objeto e define suas propriedades sem chamar seu construtor nem qualquer outro método;Hydrator::hydrate()
pode definir as propriedades de um objeto existente;Lazy*Trait
pode fazer uma classe se comportar como um fantasma de carregamento lento ou proxy virtual. A razão para usar VarExporter::export()
vs serialize()
ou igbinary é o desempenho: graças ao OPcache, o código resultante é significativamente mais rápido e mais eficiente em termos de memória do que usar unserialize()
ou igbinary_unserialize()
.
Ao contrário de var_export()
, isso funciona em qualquer valor PHP serializável.
Ele também fornece algumas melhorias em relação var_export()
/ serialize()
:
r
ou n
nos dados;ClassNotFoundException
em vez de serem desserializadas para objetos PHP_Incomplete_Class
;SplObjectStorage
, ArrayObject
ou ArrayIterator
são preservadas;Reflection*
, IteratorIterator
e RecursiveIteratorIterator
lançam uma exceção ao serem serializadas (sua versão não serializada está quebrada de qualquer maneira, consulte https://bugs.php.net/76737). Instantiator::instantiate($class)
cria um objeto de uma determinada classe sem chamar seu construtor nem qualquer outro método.
Hydrator::hydrate()
define as propriedades de um objeto existente, incluindo objetos privados e protegidos. Por exemplo: