xref: /PHP-7.2/ext/spl/tests/bug45826.phpt (revision efd817bf)
1--TEST--
2ArrayObject/ArrayIterator : serialization
3--FILE--
4<?php
5$o = new ArrayObject();
6$y = new StdClass;
7$o->append($y);
8$o->append($y);
9$o->append($o);
10
11var_dump($o[0] === $o[1]);
12var_dump($o[2] === $o);
13
14$s1 = serialize($o);
15$s2 = $o->serialize();
16var_dump($s1);
17var_dump($s2);
18
19$o1 =unserialize($s1);
20
21var_dump($o1[0] === $o1[1]);
22var_dump($o1[2] === $o1);
23
24$o2 = new ArrayObject();
25$o2->unserialize($s2);
26
27var_dump($o2[0] === $o2[1]);
28var_dump($o2[2] !== $o2);
29var_dump($o2[2][2] === $o2[2]);
30
31echo "#### Extending ArrayObject\n";
32unset($o,$x,$s1,$s2,$o1,$o2);
33class ArrayObject2 extends ArrayObject {
34    public function serialize() {
35        return parent::serialize();
36    }
37
38    public function unserialize($s) {
39        return parent::unserialize($s);
40    }
41}
42
43$o = new ArrayObject2();
44$y = new StdClass;
45$o->append($y);
46$o->append($y);
47$o->append($o);
48
49var_dump($o[0] === $o[1]);
50var_dump($o[2] === $o);
51
52$s1 = serialize($o);
53$s2 = $o->serialize();
54var_dump($s1);
55var_dump($s2);
56
57$o1 =unserialize($s1);
58
59var_dump($o1[0] === $o1[1]);
60var_dump($o1[2] === $o1);
61
62$o2 = new ArrayObject2();
63$o2->unserialize($s2);
64
65var_dump($o2[0] === $o2[1]);
66var_dump($o2[2] !== $o2);
67var_dump($o2[2][2] === $o2[2]);
68?>
69--EXPECT--
70bool(true)
71bool(true)
72string(84) "C:11:"ArrayObject":60:{x:i:0;a:3:{i:0;O:8:"stdClass":0:{}i:1;r:4;i:2;r:1;};m:a:0:{}}"
73string(125) "x:i:0;a:3:{i:0;O:8:"stdClass":0:{}i:1;r:3;i:2;C:11:"ArrayObject":45:{x:i:0;a:3:{i:0;r:3;i:1;r:3;i:2;r:5;};m:a:0:{}}};m:a:0:{}"
74bool(true)
75bool(true)
76bool(true)
77bool(true)
78bool(true)
79#### Extending ArrayObject
80bool(true)
81bool(true)
82string(85) "C:12:"ArrayObject2":60:{x:i:0;a:3:{i:0;O:8:"stdClass":0:{}i:1;r:4;i:2;r:1;};m:a:0:{}}"
83string(126) "x:i:0;a:3:{i:0;O:8:"stdClass":0:{}i:1;r:3;i:2;C:12:"ArrayObject2":45:{x:i:0;a:3:{i:0;r:3;i:1;r:3;i:2;r:5;};m:a:0:{}}};m:a:0:{}"
84bool(true)
85bool(true)
86bool(true)
87bool(true)
88bool(true)
89