Removed
-
deepclone_hydrate()no longer treats the special"\0"key as SPL
internal state.ArrayObject,ArrayIterator, andSplObjectStorage
all ship__serialize/__unserializesince PHP 7.4 — callers can
populate them by instantiating withdeepclone_hydrate()and calling
__unserialize()with the documented array shape, or by round-tripping
viadeepclone_from_array()which routes through__unserialize
natively. The mangled-key resolution path ("propName","\0*\0prop",
"\0Class\0prop") is unchanged.This removes ~80 lines of bespoke SPL handling —
offsetSetloops,
constructor invocation, packed-array shape validation, error paths —
that duplicated what the classes natively expose. Symfony's
Hydrator::hydrate()/Instantiator::instantiate()retain BC by
translating the legacy"\0"shape to__unserialize()in user-land.