Files
code-bang/backend/vendor/symfony/polyfill-deepclone/README.md
T
2026-09-22 16:43:47 +08:00

34 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Symfony Polyfill / DeepClone
============================
This package provides a pure-PHP implementation of the functions and exception
classes from the [deepclone extension](https://github.com/symfony/php-ext-deepclone):
- `deepclone_to_array(mixed $value, ?array $allowed_classes = null, bool $allow_named_closures = false): array`
— converts any serializable PHP value graph into a pure array (only scalars
and nested arrays, no objects).
- `deepclone_from_array(array $data, ?array $allowed_classes = null, bool $allow_named_closures = false): mixed`
— rebuilds the value graph from the array, preserving object identity,
references, cycles, and private property state.
- `DeepClone\NotInstantiableException` and `DeepClone\ClassNotFoundException`
When the native `deepclone` extension is loaded, this polyfill does nothing —
the extension provides the same functions 4–5× faster.
The array representation preserves PHP's copy-on-write for strings and scalar
arrays, making repeated cloning of a prototype significantly more memory
efficient than `unserialize(serialize())`. It also serves as a cache-friendly
serialization format: when dumped via `var_export()` into a `.php` file,
OPcache maps the array into shared memory, making deserialization essentially
free.
This is the same wire format used by Symfony's `VarExporter\DeepCloner`.
More information can be found in the
[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
License
=======
This library is released under the [MIT license](LICENSE).