Annotation of embedaddon/php/ext/standard/tests/serialize/bug36424.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Bug #36424 - Serializable interface breaks object references
3: --FILE--
4: <?php
5:
6: echo "-TEST\n";
7:
8: class a implements Serializable {
9: function serialize() {
10: return serialize(get_object_vars($this));
11: }
12: function unserialize($s) {
13: foreach (unserialize($s) as $p=>$v) {
14: $this->$p=$v;
15: }
16: }
17: }
18: class b extends a {}
19: class c extends b {}
20:
21: $c = new c;
22: $c->a = new a;
23: $c->a->b = new b;
24: $c->a->b->c = $c;
25: $c->a->c = $c;
26: $c->a->b->a = $c->a;
27: $c->a->a = $c->a;
28:
29: $s = serialize($c);
30: printf("%s\n", $s);
31:
32: $d = unserialize($s);
33:
34: var_dump(
35: $d === $d->a->b->c,
36: $d->a->a === $d->a,
37: $d->a->b->a === $d->a,
38: $d->a->c === $d
39: );
40:
41: print_r($d);
42:
43: echo "Done\n";
44:
45: ?>
46: --EXPECTF--
47: %aTEST
48: C:1:"c":108:{a:1:{s:1:"a";C:1:"a":81:{a:3:{s:1:"b";C:1:"b":30:{a:2:{s:1:"c";r:1;s:1:"a";r:3;}}s:1:"c";r:1;s:1:"a";r:3;}}}}
49: bool(true)
50: bool(true)
51: bool(true)
52: bool(true)
53: c Object
54: (
55: [a] => a Object
56: (
57: [b] => b Object
58: (
59: [c] => c Object
60: *RECURSION*
61: [a] => a Object
62: *RECURSION*
63: )
64:
65: [c] => c Object
66: *RECURSION*
67: [a] => a Object
68: *RECURSION*
69: )
70:
71: )
72: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>