diff --git a/src/Symfony/Component/VarDumper/Caster/Caster.php b/src/Symfony/Component/VarDumper/Caster/Caster.php index 93d0ce2b41b7..46860d2a1324 100644 --- a/src/Symfony/Component/VarDumper/Caster/Caster.php +++ b/src/Symfony/Component/VarDumper/Caster/Caster.php @@ -53,13 +53,9 @@ public static function castObject($obj, $class, $hasDebugInfo = false) $hasDebugInfo = $class->hasMethod('__debugInfo'); $class = $class->name; } - if ($hasDebugInfo) { - $a = $obj->__debugInfo(); - } elseif ($obj instanceof \Closure) { - $a = []; - } else { - $a = (array) $obj; - } + + $a = $obj instanceof \Closure ? [] : (array) $obj; + if ($obj instanceof \__PHP_Incomplete_Class) { return $a; } @@ -93,6 +89,16 @@ public static function castObject($obj, $class, $hasDebugInfo = false) } } + if ($hasDebugInfo && \is_array($debugInfo = $obj->__debugInfo())) { + foreach ($debugInfo as $k => $v) { + if (!isset($k[0]) || "\0" !== $k[0]) { + $k = self::PREFIX_VIRTUAL.$k; + } + + $a[$k] = $v; + } + } + return $a; }