From 466dbe62b4c4aca95cc177e7978bba7d5715fefa Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Thu, 29 Sep 2016 12:05:17 +0100 Subject: [PATCH] [2.7][VarDumper] Fix PHP 7.1 compat --- .../VarDumper/Caster/ReflectionCaster.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/VarDumper/Caster/ReflectionCaster.php b/src/Symfony/Component/VarDumper/Caster/ReflectionCaster.php index 8e9d212191..b7c7a8abbb 100644 --- a/src/Symfony/Component/VarDumper/Caster/ReflectionCaster.php +++ b/src/Symfony/Component/VarDumper/Caster/ReflectionCaster.php @@ -115,7 +115,7 @@ class ReflectionCaster )); if (isset($a[$prefix.'returnType'])) { - $a[$prefix.'returnType'] = (string) $a[$prefix.'returnType']; + $a[$prefix.'returnType'] = method_exists('ReflectionType', 'getName') ? $a[$prefix.'returnType']->getName() : $a[$prefix.'returnType']->__toString(); } if (isset($a[$prefix.'this'])) { $a[$prefix.'this'] = new CutStub($a[$prefix.'this']); @@ -164,12 +164,13 @@ class ReflectionCaster 'position' => 'getPosition', 'isVariadic' => 'isVariadic', 'byReference' => 'isPassedByReference', + 'allowsNull' => 'allowsNull', )); try { if (method_exists($c, 'hasType')) { if ($c->hasType()) { - $a[$prefix.'typeHint'] = $c->getType()->__toString(); + $a[$prefix.'typeHint'] = method_exists('ReflectionType', 'getName') ? $c->getType()->getName() : $c->getType()->__toString(); } } else { $v = explode(' ', $c->__toString(), 6); @@ -182,15 +183,22 @@ class ReflectionCaster $a[$prefix.'typeHint'] = $m[1]; } } + if (!isset($a[$prefix.'typeHint'])) { + unset($a[$prefix.'allowsNull']); + } try { $a[$prefix.'default'] = $v = $c->getDefaultValue(); if (method_exists($c, 'isDefaultValueConstant') && $c->isDefaultValueConstant()) { $a[$prefix.'default'] = new ConstStub($c->getDefaultValueConstantName(), $v); } + if (null === $v) { + unset($a[$prefix.'allowsNull']); + } } catch (\ReflectionException $e) { - if (isset($a[$prefix.'typeHint']) && $c->allowsNull()) { + if (isset($a[$prefix.'typeHint']) && $c->allowsNull() && !method_exists('ReflectionType', 'getName')) { $a[$prefix.'default'] = null; + unset($a[$prefix.'allowsNull']); } }