The VarExporter component allows exporting any serializable PHP data structure to plain PHP code. While doing so, it preserves all the semantics associated with the serialization mechanism of PHP (
It also provides an instantiator that allows creating and populating objects without calling their constructor nor any other methods.
The reason to use this component vs
serialize() or igbinary is performance: thanks to OPcache, the resulting code is significantly faster and more memory efficient than using
var_export(), this works on any serializable PHP value.
It also provides a few improvements over
- the output is PSR-2 compatible;
- the output can be re-indented without messing up with
\nin the data
- missing classes throw a
ClassNotFoundExceptioninstead of being unserialized to
- references involving
ArrayIteratorinstances are preserved;
RecursiveIteratorIteratorclasses throw an exception when being serialized (their unserialized version is broken anyway, see https://bugs.php.net/76737).