symfony/var-exporter
Exports serializable PHP values to fast, OPcache-friendly PHP code, preserving serialization semantics and references. Includes DeepCloner for efficient deep cloning and ProxyHelper to generate lazy-loading proxies; uses ext-deepclone (or polyfill) for speed.
Debugging & Observability Tools:
var_dump()/serialize() with structured, reusable PHP code for debugging workflows (e.g., exporting API responses, database entities, or event payloads).Performance Optimization:
serialize()/igbinary.Testing & Mocking:
User object without triggering side effects like event listeners).Build vs. Buy:
Roadmap Enablers:
DeepCloner outperforms unserialize(serialize())).json_encode() or spatie/array-to-xml.__serialize__/__unserialize__ → Fallback to var_export() or igbinary.igbinary or msgpack.doctrine/collections or custom logic."This package lets us handle complex object states more efficiently and reliably than PHP’s built-in tools. For example:
var_dump() logs), making it easier to reproduce issues.It’s battle-tested by Symfony (used in their framework) and integrates seamlessly with our PHP stack. The MIT license means no vendor lock-in."
"symfony/var-exporter gives us three key superpowers:*
VarExporter::export():
serialize() due to OPcache).__serialize__, __unserialize__, and even private/readonly properties.User object to a file for debugging, or cache complex queries as PHP code.DeepCloner:
unserialize(serialize($obj)) (thanks to ext-deepclone).Cart object in a batch job without triggering side effects (e.g., event listeners).Lazy Proxies:
DatabaseConnection or ExternalApiClient only when a method is called.Why not roll our own?
SplObjectStorage, Reflection classes) that break serialize().Proposal:
composer.json as a dev dependency for debugging/testing.How can I help you explore Laravel packages today?