Annotation of embedaddon/php/ext/standard/tests/serialize/serialization_arrays_003.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: serialization: arrays with references to an external variable
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: function check(&$a) {
17: var_dump($a);
18: $ser = serialize($a);
19: var_dump($ser);
20:
21: $b = unserialize($ser);
22: var_dump($b);
23: $b[0] = "b0.changed";
24: var_dump($b);
25: $b[1] = "b1.changed";
26: var_dump($b);
27: $b[2] = "b2.changed";
28: var_dump($b);
29: }
30:
31: echo "\n\n--- 0 refs external:\n";
32: $ext = 1;
33: $a = array();
34: $a[0] = &$ext;
35: $a[1] = 1;
36: $a[2] = 1;
37: check($a);
38:
39: echo "\n\n--- 1 refs external:\n";
40: $ext = 1;
41: $a = array();
42: $a[0] = 1;
43: $a[1] = &$ext;
44: $a[2] = 1;
45: check($a);
46:
47: echo "\n\n--- 2 refs external:\n";
48: $ext = 1;
49: $a = array();
50: $a[0] = 1;
51: $a[1] = 1;
52: $a[2] = &$ext;
53: check($a);
54:
55: echo "\n\n--- 1,2 ref external:\n";
56: $ext = 1;
57: $a = array();
58: $a[0] = &$ext;
59: $a[1] = &$ext;
60: $a[2] = 1;
61: check($a);
62:
63: echo "\n\n--- 1,2,3 ref external:\n";
64: $ext = 1;
65: $a = array();
66: $a[0] = &$ext;
67: $a[1] = &$ext;
68: $a[2] = &$ext;
69: check($a);
70:
71: echo "Done";
72: ?>
73: --EXPECTF--
74:
75:
76: --- 0 refs external:
77: array(3) {
78: [0]=>
79: &int(1)
80: [1]=>
81: int(1)
82: [2]=>
83: int(1)
84: }
85: string(30) "a:3:{i:0;i:1;i:1;i:1;i:2;i:1;}"
86: array(3) {
87: [0]=>
88: int(1)
89: [1]=>
90: int(1)
91: [2]=>
92: int(1)
93: }
94: array(3) {
95: [0]=>
96: string(10) "b0.changed"
97: [1]=>
98: int(1)
99: [2]=>
100: int(1)
101: }
102: array(3) {
103: [0]=>
104: string(10) "b0.changed"
105: [1]=>
106: string(10) "b1.changed"
107: [2]=>
108: int(1)
109: }
110: array(3) {
111: [0]=>
112: string(10) "b0.changed"
113: [1]=>
114: string(10) "b1.changed"
115: [2]=>
116: string(10) "b2.changed"
117: }
118:
119:
120: --- 1 refs external:
121: array(3) {
122: [0]=>
123: int(1)
124: [1]=>
125: &int(1)
126: [2]=>
127: int(1)
128: }
129: string(30) "a:3:{i:0;i:1;i:1;i:1;i:2;i:1;}"
130: array(3) {
131: [0]=>
132: int(1)
133: [1]=>
134: int(1)
135: [2]=>
136: int(1)
137: }
138: array(3) {
139: [0]=>
140: string(10) "b0.changed"
141: [1]=>
142: int(1)
143: [2]=>
144: int(1)
145: }
146: array(3) {
147: [0]=>
148: string(10) "b0.changed"
149: [1]=>
150: string(10) "b1.changed"
151: [2]=>
152: int(1)
153: }
154: array(3) {
155: [0]=>
156: string(10) "b0.changed"
157: [1]=>
158: string(10) "b1.changed"
159: [2]=>
160: string(10) "b2.changed"
161: }
162:
163:
164: --- 2 refs external:
165: array(3) {
166: [0]=>
167: int(1)
168: [1]=>
169: int(1)
170: [2]=>
171: &int(1)
172: }
173: string(30) "a:3:{i:0;i:1;i:1;i:1;i:2;i:1;}"
174: array(3) {
175: [0]=>
176: int(1)
177: [1]=>
178: int(1)
179: [2]=>
180: int(1)
181: }
182: array(3) {
183: [0]=>
184: string(10) "b0.changed"
185: [1]=>
186: int(1)
187: [2]=>
188: int(1)
189: }
190: array(3) {
191: [0]=>
192: string(10) "b0.changed"
193: [1]=>
194: string(10) "b1.changed"
195: [2]=>
196: int(1)
197: }
198: array(3) {
199: [0]=>
200: string(10) "b0.changed"
201: [1]=>
202: string(10) "b1.changed"
203: [2]=>
204: string(10) "b2.changed"
205: }
206:
207:
208: --- 1,2 ref external:
209: array(3) {
210: [0]=>
211: &int(1)
212: [1]=>
213: &int(1)
214: [2]=>
215: int(1)
216: }
217: string(30) "a:3:{i:0;i:1;i:1;R:2;i:2;i:1;}"
218: array(3) {
219: [0]=>
220: &int(1)
221: [1]=>
222: &int(1)
223: [2]=>
224: int(1)
225: }
226: array(3) {
227: [0]=>
228: &string(10) "b0.changed"
229: [1]=>
230: &string(10) "b0.changed"
231: [2]=>
232: int(1)
233: }
234: array(3) {
235: [0]=>
236: &string(10) "b1.changed"
237: [1]=>
238: &string(10) "b1.changed"
239: [2]=>
240: int(1)
241: }
242: array(3) {
243: [0]=>
244: &string(10) "b1.changed"
245: [1]=>
246: &string(10) "b1.changed"
247: [2]=>
248: string(10) "b2.changed"
249: }
250:
251:
252: --- 1,2,3 ref external:
253: array(3) {
254: [0]=>
255: &int(1)
256: [1]=>
257: &int(1)
258: [2]=>
259: &int(1)
260: }
261: string(30) "a:3:{i:0;i:1;i:1;R:2;i:2;R:2;}"
262: array(3) {
263: [0]=>
264: &int(1)
265: [1]=>
266: &int(1)
267: [2]=>
268: &int(1)
269: }
270: array(3) {
271: [0]=>
272: &string(10) "b0.changed"
273: [1]=>
274: &string(10) "b0.changed"
275: [2]=>
276: &string(10) "b0.changed"
277: }
278: array(3) {
279: [0]=>
280: &string(10) "b1.changed"
281: [1]=>
282: &string(10) "b1.changed"
283: [2]=>
284: &string(10) "b1.changed"
285: }
286: array(3) {
287: [0]=>
288: &string(10) "b2.changed"
289: [1]=>
290: &string(10) "b2.changed"
291: [2]=>
292: &string(10) "b2.changed"
293: }
294: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>