Annotation of embedaddon/php/ext/standard/tests/serialize/serialization_objects_012.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Object serialization / unserialization: real references and COW references
3: --FILE--
4: <?php
5: /* Prototype : proto string serialize(mixed variable)
6: * Description: Returns a string representation of variable (which can later be unserialized)
7: * Source code: ext/standard/var.c
8: * Alias to functions:
9: */
10: /* Prototype : proto mixed unserialize(string variable_representation)
11: * Description: Takes a string representation of variable and recreates it
12: * Source code: ext/standard/var.c
13: * Alias to functions:
14: */
15:
16: echo "\n\nArray containing same object twice:\n";
17: $obj = new stdclass;
18: $a[0] = $obj;
19: $a[1] = $a[0];
20: var_dump($a);
21:
22: $ser = serialize($a);
23: var_dump($ser);
24:
25: $ua = unserialize($ser);
26: var_dump($ua);
27: $ua[0]->a = "newProp";
28: var_dump($ua);
29: $ua[0] = "a0.changed";
30: var_dump($ua);
31:
32:
33: echo "\n\nArray containing object and reference to that object:\n";
34: $obj = new stdclass;
35: $a[0] = $obj;
36: $a[1] = &$a[0];
37: var_dump($a);
38:
39: $ser = serialize($a);
40: var_dump($ser);
41:
42: $ua = unserialize($ser);
43: var_dump($ua);
44: $ua[0]->a = "newProp";
45: var_dump($ua);
46: $ua[0] = "a0.changed";
47: var_dump($ua);
48:
49: echo "\n\nObject containing same object twice:";
50: $obj = new stdclass;
51: $contaner = new stdclass;
52: $contaner->a = $obj;
53: $contaner->b = $contaner->a;
54: var_dump($contaner);
55:
56: $ser = serialize($contaner);
57: var_dump($ser);
58:
59: $ucontainer = unserialize($ser);
60: var_dump($ucontainer);
61: $ucontainer->a->a = "newProp";
62: var_dump($ucontainer);
63: $ucontainer->a = "container->a.changed";
64: var_dump($ucontainer);
65:
66:
67: echo "\n\nObject containing object and reference to that object:\n";
68: $obj = new stdclass;
69: $contaner = new stdclass;
70: $contaner->a = $obj;
71: $contaner->b = &$contaner->a;
72: var_dump($contaner);
73:
74: $ser = serialize($contaner);
75: var_dump($ser);
76:
77: $ucontainer = unserialize($ser);
78: var_dump($ucontainer);
79: $ucontainer->a->a = "newProp";
80: var_dump($ucontainer);
81: $ucontainer->b = "container->a.changed";
82: var_dump($ucontainer);
83:
84: echo "Done";
85: ?>
86: --EXPECTF--
87:
88:
89: Array containing same object twice:
90: array(2) {
91: [0]=>
92: object(stdClass)#%d (0) {
93: }
94: [1]=>
95: object(stdClass)#%d (0) {
96: }
97: }
98: string(37) "a:2:{i:0;O:8:"stdClass":0:{}i:1;r:2;}"
99: array(2) {
100: [0]=>
101: object(stdClass)#%d (0) {
102: }
103: [1]=>
104: object(stdClass)#%d (0) {
105: }
106: }
107: array(2) {
108: [0]=>
109: object(stdClass)#%d (1) {
110: ["a"]=>
111: string(7) "newProp"
112: }
113: [1]=>
114: object(stdClass)#%d (1) {
115: ["a"]=>
116: string(7) "newProp"
117: }
118: }
119: array(2) {
120: [0]=>
121: string(10) "a0.changed"
122: [1]=>
123: object(stdClass)#%d (1) {
124: ["a"]=>
125: string(7) "newProp"
126: }
127: }
128:
129:
130: Array containing object and reference to that object:
131: array(2) {
132: [0]=>
133: &object(stdClass)#%d (0) {
134: }
135: [1]=>
136: &object(stdClass)#%d (0) {
137: }
138: }
139: string(37) "a:2:{i:0;O:8:"stdClass":0:{}i:1;R:2;}"
140: array(2) {
141: [0]=>
142: &object(stdClass)#%d (0) {
143: }
144: [1]=>
145: &object(stdClass)#%d (0) {
146: }
147: }
148: array(2) {
149: [0]=>
150: &object(stdClass)#%d (1) {
151: ["a"]=>
152: string(7) "newProp"
153: }
154: [1]=>
155: &object(stdClass)#%d (1) {
156: ["a"]=>
157: string(7) "newProp"
158: }
159: }
160: array(2) {
161: [0]=>
162: &string(10) "a0.changed"
163: [1]=>
164: &string(10) "a0.changed"
165: }
166:
167:
168: Object containing same object twice:object(stdClass)#%d (2) {
169: ["a"]=>
170: object(stdClass)#%d (0) {
171: }
172: ["b"]=>
173: object(stdClass)#%d (0) {
174: }
175: }
176: string(58) "O:8:"stdClass":2:{s:1:"a";O:8:"stdClass":0:{}s:1:"b";r:2;}"
177: object(stdClass)#%d (2) {
178: ["a"]=>
179: object(stdClass)#%d (0) {
180: }
181: ["b"]=>
182: object(stdClass)#%d (0) {
183: }
184: }
185: object(stdClass)#%d (2) {
186: ["a"]=>
187: object(stdClass)#%d (1) {
188: ["a"]=>
189: string(7) "newProp"
190: }
191: ["b"]=>
192: object(stdClass)#%d (1) {
193: ["a"]=>
194: string(7) "newProp"
195: }
196: }
197: object(stdClass)#%d (2) {
198: ["a"]=>
199: string(20) "container->a.changed"
200: ["b"]=>
201: object(stdClass)#%d (1) {
202: ["a"]=>
203: string(7) "newProp"
204: }
205: }
206:
207:
208: Object containing object and reference to that object:
209: object(stdClass)#%d (2) {
210: ["a"]=>
211: &object(stdClass)#%d (0) {
212: }
213: ["b"]=>
214: &object(stdClass)#%d (0) {
215: }
216: }
217: string(58) "O:8:"stdClass":2:{s:1:"a";O:8:"stdClass":0:{}s:1:"b";R:2;}"
218: object(stdClass)#%d (2) {
219: ["a"]=>
220: &object(stdClass)#%d (0) {
221: }
222: ["b"]=>
223: &object(stdClass)#%d (0) {
224: }
225: }
226: object(stdClass)#%d (2) {
227: ["a"]=>
228: &object(stdClass)#%d (1) {
229: ["a"]=>
230: string(7) "newProp"
231: }
232: ["b"]=>
233: &object(stdClass)#%d (1) {
234: ["a"]=>
235: string(7) "newProp"
236: }
237: }
238: object(stdClass)#%d (2) {
239: ["a"]=>
240: &string(20) "container->a.changed"
241: ["b"]=>
242: &string(20) "container->a.changed"
243: }
244: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>