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: