[VarDumper] Use \ReflectionReference for determining if a key is a reference (php >= 7.4)

This commit is contained in:
Dorel Mardari 2019-04-28 12:19:02 +02:00 committed by Nicolas Grekas
parent 376a8f4cab
commit e99a6b85b8
1 changed files with 10 additions and 3 deletions

View File

@ -86,8 +86,15 @@ class VarCloner extends AbstractCloner
}
foreach ($vals as $k => $v) {
// $v is the original value or a stub object in case of hard references
if (\PHP_VERSION_ID >= 70400) {
$zvalIsRef = null !== \ReflectionReference::fromArrayElement($vals, $k);
} else {
$refs[$k] = $cookie;
if ($zvalIsRef = $vals[$k] === $cookie) {
$zvalIsRef = $vals[$k] === $cookie;
}
if ($zvalIsRef) {
$vals[$k] = &$stub; // Break hard references to make $queue completely
unset($stub); // independent from the original structure
if ($v instanceof Stub && isset($hardRefs[spl_object_hash($v)])) {