Annotation of embedaddon/php/ext/standard/tests/serialize/serialization_objects_013.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Object serialization / unserialization: references amongst properties
3: --INI--
4: error_reporting = E_ALL & ~E_STRICT
5: --FILE--
6: <?php
7: /* Prototype : proto string serialize(mixed variable)
8: * Description: Returns a string representation of variable (which can later be unserialized)
9: * Source code: ext/standard/var.c
10: * Alias to functions:
11: */
12: /* Prototype : proto mixed unserialize(string variable_representation)
13: * Description: Takes a string representation of variable and recreates it
14: * Source code: ext/standard/var.c
15: * Alias to functions:
16: */
17:
18: function check(&$obj) {
19: var_dump($obj);
20: $ser = serialize($obj);
21: var_dump($ser);
22:
23: $uobj = unserialize($ser);
24: var_dump($uobj);
25: $uobj->a = "obj->a.changed";
26: var_dump($uobj);
27: $uobj->b = "obj->b.changed";
28: var_dump($uobj);
29: $uobj->c = "obj->c.changed";
30: var_dump($uobj);
31: }
32:
33: echo "\n\n--- a refs b:\n";
34: $obj = new stdClass;
35: $obj->a = &$obj->b;
36: $obj->b = 1;
37: $obj->c = 1;
38: check($obj);
39:
40: echo "\n\n--- a refs c:\n";
41: $obj = new stdClass;
42: $obj->a = &$obj->c;
43: $obj->b = 1;
44: $obj->c = 1;
45: check($obj);
46:
47: echo "\n\n--- b refs a:\n";
48: $obj = new stdClass;
49: $obj->a = 1;
50: $obj->b = &$obj->a;
51: $obj->c = 1;
52: check($obj);
53:
54: echo "\n\n--- b refs c:\n";
55: $obj = new stdClass;
56: $obj->a = 1;
57: $obj->b = &$obj->c;
58: $obj->c = 1;
59: check($obj);
60:
61: echo "\n\n--- c refs a:\n";
62: $obj = new stdClass;
63: $obj->a = 1;
64: $obj->b = 1;
65: $obj->c = &$obj->a;
66: check($obj);
67:
68: echo "\n\n--- c refs b:\n";
69: $obj = new stdClass;
70: $obj->a = 1;
71: $obj->b = 1;
72: $obj->c = &$obj->b;
73: check($obj);
74:
75: echo "\n\n--- a,b refs c:\n";
76: $obj = new stdClass;
77: $obj->a = &$obj->c;
78: $obj->b = &$obj->c;
79: $obj->c = 1;
80: check($obj);
81:
82: echo "\n\n--- a,c refs b:\n";
83: $obj = new stdClass;
84: $obj->a = &$obj->b;
85: $obj->b = 1;
86: $obj->c = &$obj->b;
87: check($obj);
88:
89: echo "\n\n--- b,c refs a:\n";
90: $obj = new stdClass;
91: $obj->a = 1;
92: $obj->b = &$obj->a;
93: $obj->c = &$obj->a;
94: check($obj);
95:
96: echo "Done";
97: ?>
98: --EXPECTF--
99:
100: --- a refs b:
101: object(stdClass)#%d (3) {
102: ["b"]=>
103: &int(1)
104: ["a"]=>
105: &int(1)
106: ["c"]=>
107: int(1)
108: }
109: string(55) "O:8:"stdClass":3:{s:1:"b";i:1;s:1:"a";R:2;s:1:"c";i:1;}"
110: object(stdClass)#%d (3) {
111: ["b"]=>
112: &int(1)
113: ["a"]=>
114: &int(1)
115: ["c"]=>
116: int(1)
117: }
118: object(stdClass)#%d (3) {
119: ["b"]=>
120: &string(14) "obj->a.changed"
121: ["a"]=>
122: &string(14) "obj->a.changed"
123: ["c"]=>
124: int(1)
125: }
126: object(stdClass)#%d (3) {
127: ["b"]=>
128: &string(14) "obj->b.changed"
129: ["a"]=>
130: &string(14) "obj->b.changed"
131: ["c"]=>
132: int(1)
133: }
134: object(stdClass)#%d (3) {
135: ["b"]=>
136: &string(14) "obj->b.changed"
137: ["a"]=>
138: &string(14) "obj->b.changed"
139: ["c"]=>
140: string(14) "obj->c.changed"
141: }
142:
143:
144: --- a refs c:
145: object(stdClass)#%d (3) {
146: ["c"]=>
147: &int(1)
148: ["a"]=>
149: &int(1)
150: ["b"]=>
151: int(1)
152: }
153: string(55) "O:8:"stdClass":3:{s:1:"c";i:1;s:1:"a";R:2;s:1:"b";i:1;}"
154: object(stdClass)#%d (3) {
155: ["c"]=>
156: &int(1)
157: ["a"]=>
158: &int(1)
159: ["b"]=>
160: int(1)
161: }
162: object(stdClass)#%d (3) {
163: ["c"]=>
164: &string(14) "obj->a.changed"
165: ["a"]=>
166: &string(14) "obj->a.changed"
167: ["b"]=>
168: int(1)
169: }
170: object(stdClass)#%d (3) {
171: ["c"]=>
172: &string(14) "obj->a.changed"
173: ["a"]=>
174: &string(14) "obj->a.changed"
175: ["b"]=>
176: string(14) "obj->b.changed"
177: }
178: object(stdClass)#%d (3) {
179: ["c"]=>
180: &string(14) "obj->c.changed"
181: ["a"]=>
182: &string(14) "obj->c.changed"
183: ["b"]=>
184: string(14) "obj->b.changed"
185: }
186:
187:
188: --- b refs a:
189: object(stdClass)#%d (3) {
190: ["a"]=>
191: &int(1)
192: ["b"]=>
193: &int(1)
194: ["c"]=>
195: int(1)
196: }
197: string(55) "O:8:"stdClass":3:{s:1:"a";i:1;s:1:"b";R:2;s:1:"c";i:1;}"
198: object(stdClass)#%d (3) {
199: ["a"]=>
200: &int(1)
201: ["b"]=>
202: &int(1)
203: ["c"]=>
204: int(1)
205: }
206: object(stdClass)#%d (3) {
207: ["a"]=>
208: &string(14) "obj->a.changed"
209: ["b"]=>
210: &string(14) "obj->a.changed"
211: ["c"]=>
212: int(1)
213: }
214: object(stdClass)#%d (3) {
215: ["a"]=>
216: &string(14) "obj->b.changed"
217: ["b"]=>
218: &string(14) "obj->b.changed"
219: ["c"]=>
220: int(1)
221: }
222: object(stdClass)#%d (3) {
223: ["a"]=>
224: &string(14) "obj->b.changed"
225: ["b"]=>
226: &string(14) "obj->b.changed"
227: ["c"]=>
228: string(14) "obj->c.changed"
229: }
230:
231:
232: --- b refs c:
233: object(stdClass)#%d (3) {
234: ["a"]=>
235: int(1)
236: ["c"]=>
237: &int(1)
238: ["b"]=>
239: &int(1)
240: }
241: string(55) "O:8:"stdClass":3:{s:1:"a";i:1;s:1:"c";i:1;s:1:"b";R:3;}"
242: object(stdClass)#%d (3) {
243: ["a"]=>
244: int(1)
245: ["c"]=>
246: &int(1)
247: ["b"]=>
248: &int(1)
249: }
250: object(stdClass)#%d (3) {
251: ["a"]=>
252: string(14) "obj->a.changed"
253: ["c"]=>
254: &int(1)
255: ["b"]=>
256: &int(1)
257: }
258: object(stdClass)#%d (3) {
259: ["a"]=>
260: string(14) "obj->a.changed"
261: ["c"]=>
262: &string(14) "obj->b.changed"
263: ["b"]=>
264: &string(14) "obj->b.changed"
265: }
266: object(stdClass)#%d (3) {
267: ["a"]=>
268: string(14) "obj->a.changed"
269: ["c"]=>
270: &string(14) "obj->c.changed"
271: ["b"]=>
272: &string(14) "obj->c.changed"
273: }
274:
275:
276: --- c refs a:
277: object(stdClass)#%d (3) {
278: ["a"]=>
279: &int(1)
280: ["b"]=>
281: int(1)
282: ["c"]=>
283: &int(1)
284: }
285: string(55) "O:8:"stdClass":3:{s:1:"a";i:1;s:1:"b";i:1;s:1:"c";R:2;}"
286: object(stdClass)#%d (3) {
287: ["a"]=>
288: &int(1)
289: ["b"]=>
290: int(1)
291: ["c"]=>
292: &int(1)
293: }
294: object(stdClass)#%d (3) {
295: ["a"]=>
296: &string(14) "obj->a.changed"
297: ["b"]=>
298: int(1)
299: ["c"]=>
300: &string(14) "obj->a.changed"
301: }
302: object(stdClass)#%d (3) {
303: ["a"]=>
304: &string(14) "obj->a.changed"
305: ["b"]=>
306: string(14) "obj->b.changed"
307: ["c"]=>
308: &string(14) "obj->a.changed"
309: }
310: object(stdClass)#%d (3) {
311: ["a"]=>
312: &string(14) "obj->c.changed"
313: ["b"]=>
314: string(14) "obj->b.changed"
315: ["c"]=>
316: &string(14) "obj->c.changed"
317: }
318:
319:
320: --- c refs b:
321: object(stdClass)#%d (3) {
322: ["a"]=>
323: int(1)
324: ["b"]=>
325: &int(1)
326: ["c"]=>
327: &int(1)
328: }
329: string(55) "O:8:"stdClass":3:{s:1:"a";i:1;s:1:"b";i:1;s:1:"c";R:3;}"
330: object(stdClass)#%d (3) {
331: ["a"]=>
332: int(1)
333: ["b"]=>
334: &int(1)
335: ["c"]=>
336: &int(1)
337: }
338: object(stdClass)#%d (3) {
339: ["a"]=>
340: string(14) "obj->a.changed"
341: ["b"]=>
342: &int(1)
343: ["c"]=>
344: &int(1)
345: }
346: object(stdClass)#%d (3) {
347: ["a"]=>
348: string(14) "obj->a.changed"
349: ["b"]=>
350: &string(14) "obj->b.changed"
351: ["c"]=>
352: &string(14) "obj->b.changed"
353: }
354: object(stdClass)#%d (3) {
355: ["a"]=>
356: string(14) "obj->a.changed"
357: ["b"]=>
358: &string(14) "obj->c.changed"
359: ["c"]=>
360: &string(14) "obj->c.changed"
361: }
362:
363:
364: --- a,b refs c:
365: object(stdClass)#%d (3) {
366: ["c"]=>
367: &int(1)
368: ["a"]=>
369: &int(1)
370: ["b"]=>
371: &int(1)
372: }
373: string(55) "O:8:"stdClass":3:{s:1:"c";i:1;s:1:"a";R:2;s:1:"b";R:2;}"
374: object(stdClass)#%d (3) {
375: ["c"]=>
376: &int(1)
377: ["a"]=>
378: &int(1)
379: ["b"]=>
380: &int(1)
381: }
382: object(stdClass)#%d (3) {
383: ["c"]=>
384: &string(14) "obj->a.changed"
385: ["a"]=>
386: &string(14) "obj->a.changed"
387: ["b"]=>
388: &string(14) "obj->a.changed"
389: }
390: object(stdClass)#%d (3) {
391: ["c"]=>
392: &string(14) "obj->b.changed"
393: ["a"]=>
394: &string(14) "obj->b.changed"
395: ["b"]=>
396: &string(14) "obj->b.changed"
397: }
398: object(stdClass)#%d (3) {
399: ["c"]=>
400: &string(14) "obj->c.changed"
401: ["a"]=>
402: &string(14) "obj->c.changed"
403: ["b"]=>
404: &string(14) "obj->c.changed"
405: }
406:
407:
408: --- a,c refs b:
409: object(stdClass)#%d (3) {
410: ["b"]=>
411: &int(1)
412: ["a"]=>
413: &int(1)
414: ["c"]=>
415: &int(1)
416: }
417: string(55) "O:8:"stdClass":3:{s:1:"b";i:1;s:1:"a";R:2;s:1:"c";R:2;}"
418: object(stdClass)#%d (3) {
419: ["b"]=>
420: &int(1)
421: ["a"]=>
422: &int(1)
423: ["c"]=>
424: &int(1)
425: }
426: object(stdClass)#%d (3) {
427: ["b"]=>
428: &string(14) "obj->a.changed"
429: ["a"]=>
430: &string(14) "obj->a.changed"
431: ["c"]=>
432: &string(14) "obj->a.changed"
433: }
434: object(stdClass)#%d (3) {
435: ["b"]=>
436: &string(14) "obj->b.changed"
437: ["a"]=>
438: &string(14) "obj->b.changed"
439: ["c"]=>
440: &string(14) "obj->b.changed"
441: }
442: object(stdClass)#%d (3) {
443: ["b"]=>
444: &string(14) "obj->c.changed"
445: ["a"]=>
446: &string(14) "obj->c.changed"
447: ["c"]=>
448: &string(14) "obj->c.changed"
449: }
450:
451:
452: --- b,c refs a:
453: object(stdClass)#%d (3) {
454: ["a"]=>
455: &int(1)
456: ["b"]=>
457: &int(1)
458: ["c"]=>
459: &int(1)
460: }
461: string(55) "O:8:"stdClass":3:{s:1:"a";i:1;s:1:"b";R:2;s:1:"c";R:2;}"
462: object(stdClass)#%d (3) {
463: ["a"]=>
464: &int(1)
465: ["b"]=>
466: &int(1)
467: ["c"]=>
468: &int(1)
469: }
470: object(stdClass)#%d (3) {
471: ["a"]=>
472: &string(14) "obj->a.changed"
473: ["b"]=>
474: &string(14) "obj->a.changed"
475: ["c"]=>
476: &string(14) "obj->a.changed"
477: }
478: object(stdClass)#%d (3) {
479: ["a"]=>
480: &string(14) "obj->b.changed"
481: ["b"]=>
482: &string(14) "obj->b.changed"
483: ["c"]=>
484: &string(14) "obj->b.changed"
485: }
486: object(stdClass)#%d (3) {
487: ["a"]=>
488: &string(14) "obj->c.changed"
489: ["b"]=>
490: &string(14) "obj->c.changed"
491: ["c"]=>
492: &string(14) "obj->c.changed"
493: }
494: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>