1 changed files with 18 additions and 16 deletions
@ -1,71 +1,73 @@ |
|||
--TEST-- |
|||
Bug #31402 (unserialize() generates references when it should not) |
|||
--INI-- |
|||
error_reporting=E_ALL&~E_STRICT |
|||
--FILE-- |
|||
<?php |
|||
|
|||
class X { |
|||
class TestX { |
|||
var $i; |
|||
|
|||
function X($i) { |
|||
function __construct($i) { |
|||
$this->i = $i; |
|||
} |
|||
} |
|||
|
|||
class Y { |
|||
class TestY { |
|||
var $A = array(); |
|||
var $B; |
|||
|
|||
function Y() { |
|||
$this->A[1] = new X(1); |
|||
$this->A[2] = new X(2); |
|||
function __construct() { |
|||
$this->A[1] = new TestX(1); |
|||
$this->A[2] = new TestX(2); |
|||
$this->B = $this->A[1]; |
|||
} |
|||
} |
|||
|
|||
$before = new Y(); |
|||
$before = new TestY(); |
|||
$ser = serialize($before); |
|||
$after = unserialize($ser); |
|||
|
|||
var_dump($before, $after); |
|||
|
|||
?> |
|||
--EXPECT-- |
|||
object(y)(2) { |
|||
--EXPECTF-- |
|||
object(TestY)#%d (2) { |
|||
["A"]=> |
|||
array(2) { |
|||
[1]=> |
|||
object(x)(1) { |
|||
object(TestX)#%d (1) { |
|||
["i"]=> |
|||
int(1) |
|||
} |
|||
[2]=> |
|||
object(x)(1) { |
|||
object(TestX)#%d (1) { |
|||
["i"]=> |
|||
int(2) |
|||
} |
|||
} |
|||
["B"]=> |
|||
object(x)(1) { |
|||
object(TestX)#%d (1) { |
|||
["i"]=> |
|||
int(1) |
|||
} |
|||
} |
|||
object(y)(2) { |
|||
object(TestY)#%d (2) { |
|||
["A"]=> |
|||
array(2) { |
|||
[1]=> |
|||
&object(x)(1) { |
|||
&object(TestX)#%d (1) { |
|||
["i"]=> |
|||
int(1) |
|||
} |
|||
[2]=> |
|||
object(x)(1) { |
|||
object(TestX)#%d (1) { |
|||
["i"]=> |
|||
int(2) |
|||
} |
|||
} |
|||
["B"]=> |
|||
&object(x)(1) { |
|||
&object(TestX)#%d (1) { |
|||
["i"]=> |
|||
int(1) |
|||
} |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue