[VarDumper] Adapt to php 7.2 changes

This commit is contained in:
Nicolas Grekas 2017-07-25 16:01:38 +02:00
parent ee58cfcf10
commit 3c2f5f7a24
3 changed files with 39 additions and 12 deletions

View File

@ -54,7 +54,7 @@ class Caster
if ($a) { if ($a) {
$p = array_keys($a); $p = array_keys($a);
foreach ($p as $i => $k) { foreach ($p as $i => $k) {
if (isset($k[0]) && "\0" !== $k[0] && !$reflector->hasProperty($k)) { if (isset($k[0]) ? "\0" !== $k[0] && !$reflector->hasProperty($k) : \PHP_VERSION_ID >= 70200) {
$p[$i] = self::PREFIX_DYNAMIC.$k; $p[$i] = self::PREFIX_DYNAMIC.$k;
} elseif (isset($k[16]) && "\0" === $k[16] && 0 === strpos($k, "\0class@anonymous\0")) { } elseif (isset($k[16]) && "\0" === $k[16] && 0 === strpos($k, "\0class@anonymous\0")) {
$p[$i] = "\0".$reflector->getParentClass().'@anonymous'.strrchr($k, "\0"); $p[$i] = "\0".$reflector->getParentClass().'@anonymous'.strrchr($k, "\0");

View File

@ -141,8 +141,22 @@ EOTXT
$var[] = &$v; $var[] = &$v;
$var[''] = 2; $var[''] = 2;
$this->assertDumpMatchesFormat( if (\PHP_VERSION_ID >= 70200) {
<<<'EOTXT' $this->assertDumpMatchesFormat(
<<<'EOTXT'
array:4 [
0 => {}
1 => &1 null
2 => &1 null
"" => 2
]
EOTXT
,
$var
);
} else {
$this->assertDumpMatchesFormat(
<<<'EOTXT'
array:4 [ array:4 [
"0" => {} "0" => {}
"1" => &1 null "1" => &1 null
@ -150,9 +164,10 @@ array:4 [
"" => 2 "" => 2
] ]
EOTXT EOTXT
, ,
$var $var
); );
}
} }
public function testObjectCast() public function testObjectCast()
@ -160,16 +175,28 @@ EOTXT
$var = (object) array(1 => 1); $var = (object) array(1 => 1);
$var->{1} = 2; $var->{1} = 2;
$this->assertDumpMatchesFormat( if (\PHP_VERSION_ID >= 70200) {
<<<'EOTXT' $this->assertDumpMatchesFormat(
<<<'EOTXT'
{
+"1": 2
}
EOTXT
,
$var
);
} else {
$this->assertDumpMatchesFormat(
<<<'EOTXT'
{ {
+1: 1 +1: 1
+"1": 2 +"1": 2
} }
EOTXT EOTXT
, ,
$var $var
); );
}
} }
public function testClosedResource() public function testClosedResource()

View File

@ -203,7 +203,7 @@ object(Symfony\Component\VarDumper\Cloner\Data)#%i (4) {
EOTXT; EOTXT;
ob_start(); ob_start();
var_dump($clone); var_dump($clone);
$this->assertStringMatchesFormat($expected, ob_get_clean()); $this->assertStringMatchesFormat(\PHP_VERSION_ID >= 70200 ? str_replace('"1"', '1', $expected) : $expected, ob_get_clean());
} }
public function testCaster() public function testCaster()