Return to serialization_objects_015.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / serialize |
1.1 misho 1: --TEST-- 2: Object serialization / unserialization: properties reference containing object 3: --INI-- 4: error_reporting = E_ALL & ~E_STRICT 5: --FILE-- 6: <?php 7: 8: function check(&$obj) { 9: var_dump($obj); 10: $ser = serialize($obj); 11: var_dump($ser); 12: 13: $uobj = unserialize($ser); 14: var_dump($uobj); 15: $uobj->a = "obj->a.changed"; 16: var_dump($uobj); 17: $uobj->b = "obj->b.changed"; 18: var_dump($uobj); 19: $uobj->c = "obj->c.changed"; 20: var_dump($uobj); 21: } 22: 23: echo "\n\n--- a refs container:\n"; 24: $ext = 1; 25: $obj = new stdClass; 26: $obj->a = &$obj; 27: $obj->b = 1; 28: $obj->c = 1; 29: check($obj); 30: 31: echo "\n\n--- a eqs container:\n"; 32: $ext = 1; 33: $obj = new stdClass; 34: $obj->a = $obj; 35: $obj->b = 1; 36: $obj->c = 1; 37: check($obj); 38: 39: echo "\n\n--- a,b ref container:\n"; 40: $ext = 1; 41: $obj = new stdClass; 42: $obj->a = &$obj; 43: $obj->b = &$obj; 44: $obj->c = 1; 45: check($obj); 46: 47: echo "\n\n--- a,b eq container:\n"; 48: $ext = 1; 49: $obj = new stdClass; 50: $obj->a = $obj; 51: $obj->b = $obj; 52: $obj->c = 1; 53: check($obj); 54: 55: echo "\n\n--- a,b,c ref container:\n"; 56: $ext = 1; 57: $obj = new stdClass; 58: $obj->a = &$obj; 59: $obj->b = &$obj; 60: $obj->c = &$obj; 61: check($obj); 62: 63: echo "\n\n--- a,b,c eq container:\n"; 64: $ext = 1; 65: $obj = new stdClass; 66: $obj->a = $obj; 67: $obj->b = $obj; 68: $obj->c = $obj; 69: check($obj); 70: 71: echo "Done"; 72: ?> 73: --EXPECTF-- 74: --- a refs container: 75: object(stdClass)#%d (3) { 76: ["a"]=> 77: *RECURSION* 78: ["b"]=> 79: int(1) 80: ["c"]=> 81: int(1) 82: } 83: string(55) "O:8:"stdClass":3:{s:1:"a";R:1;s:1:"b";i:1;s:1:"c";i:1;}" 84: object(stdClass)#%d (3) { 85: ["a"]=> 86: *RECURSION* 87: ["b"]=> 88: int(1) 89: ["c"]=> 90: int(1) 91: } 92: object(stdClass)#%d (3) { 93: ["a"]=> 94: string(14) "obj->a.changed" 95: ["b"]=> 96: int(1) 97: ["c"]=> 98: int(1) 99: } 100: object(stdClass)#%d (3) { 101: ["a"]=> 102: string(14) "obj->a.changed" 103: ["b"]=> 104: string(14) "obj->b.changed" 105: ["c"]=> 106: int(1) 107: } 108: object(stdClass)#%d (3) { 109: ["a"]=> 110: string(14) "obj->a.changed" 111: ["b"]=> 112: string(14) "obj->b.changed" 113: ["c"]=> 114: string(14) "obj->c.changed" 115: } 116: 117: 118: --- a eqs container: 119: object(stdClass)#%d (3) { 120: ["a"]=> 121: *RECURSION* 122: ["b"]=> 123: int(1) 124: ["c"]=> 125: int(1) 126: } 127: string(55) "O:8:"stdClass":3:{s:1:"a";r:1;s:1:"b";i:1;s:1:"c";i:1;}" 128: object(stdClass)#%d (3) { 129: ["a"]=> 130: *RECURSION* 131: ["b"]=> 132: int(1) 133: ["c"]=> 134: int(1) 135: } 136: object(stdClass)#%d (3) { 137: ["a"]=> 138: string(14) "obj->a.changed" 139: ["b"]=> 140: int(1) 141: ["c"]=> 142: int(1) 143: } 144: object(stdClass)#%d (3) { 145: ["a"]=> 146: string(14) "obj->a.changed" 147: ["b"]=> 148: string(14) "obj->b.changed" 149: ["c"]=> 150: int(1) 151: } 152: object(stdClass)#%d (3) { 153: ["a"]=> 154: string(14) "obj->a.changed" 155: ["b"]=> 156: string(14) "obj->b.changed" 157: ["c"]=> 158: string(14) "obj->c.changed" 159: } 160: 161: 162: --- a,b ref container: 163: object(stdClass)#%d (3) { 164: ["a"]=> 165: *RECURSION* 166: ["b"]=> 167: *RECURSION* 168: ["c"]=> 169: int(1) 170: } 171: string(55) "O:8:"stdClass":3:{s:1:"a";R:1;s:1:"b";R:1;s:1:"c";i:1;}" 172: object(stdClass)#%d (3) { 173: ["a"]=> 174: *RECURSION* 175: ["b"]=> 176: *RECURSION* 177: ["c"]=> 178: int(1) 179: } 180: object(stdClass)#%d (3) { 181: ["a"]=> 182: &string(14) "obj->a.changed" 183: ["b"]=> 184: &string(14) "obj->a.changed" 185: ["c"]=> 186: int(1) 187: } 188: object(stdClass)#%d (3) { 189: ["a"]=> 190: &string(14) "obj->b.changed" 191: ["b"]=> 192: &string(14) "obj->b.changed" 193: ["c"]=> 194: int(1) 195: } 196: object(stdClass)#%d (3) { 197: ["a"]=> 198: &string(14) "obj->b.changed" 199: ["b"]=> 200: &string(14) "obj->b.changed" 201: ["c"]=> 202: string(14) "obj->c.changed" 203: } 204: 205: 206: --- a,b eq container: 207: object(stdClass)#%d (3) { 208: ["a"]=> 209: *RECURSION* 210: ["b"]=> 211: *RECURSION* 212: ["c"]=> 213: int(1) 214: } 215: string(55) "O:8:"stdClass":3:{s:1:"a";r:1;s:1:"b";r:1;s:1:"c";i:1;}" 216: object(stdClass)#%d (3) { 217: ["a"]=> 218: *RECURSION* 219: ["b"]=> 220: *RECURSION* 221: ["c"]=> 222: int(1) 223: } 224: object(stdClass)#%d (3) { 225: ["a"]=> 226: string(14) "obj->a.changed" 227: ["b"]=> 228: *RECURSION* 229: ["c"]=> 230: int(1) 231: } 232: object(stdClass)#%d (3) { 233: ["a"]=> 234: string(14) "obj->a.changed" 235: ["b"]=> 236: string(14) "obj->b.changed" 237: ["c"]=> 238: int(1) 239: } 240: object(stdClass)#%d (3) { 241: ["a"]=> 242: string(14) "obj->a.changed" 243: ["b"]=> 244: string(14) "obj->b.changed" 245: ["c"]=> 246: string(14) "obj->c.changed" 247: } 248: 249: 250: --- a,b,c ref container: 251: object(stdClass)#%d (3) { 252: ["a"]=> 253: *RECURSION* 254: ["b"]=> 255: *RECURSION* 256: ["c"]=> 257: *RECURSION* 258: } 259: string(55) "O:8:"stdClass":3:{s:1:"a";R:1;s:1:"b";R:1;s:1:"c";R:1;}" 260: object(stdClass)#%d (3) { 261: ["a"]=> 262: *RECURSION* 263: ["b"]=> 264: *RECURSION* 265: ["c"]=> 266: *RECURSION* 267: } 268: object(stdClass)#%d (3) { 269: ["a"]=> 270: &string(14) "obj->a.changed" 271: ["b"]=> 272: &string(14) "obj->a.changed" 273: ["c"]=> 274: &string(14) "obj->a.changed" 275: } 276: object(stdClass)#%d (3) { 277: ["a"]=> 278: &string(14) "obj->b.changed" 279: ["b"]=> 280: &string(14) "obj->b.changed" 281: ["c"]=> 282: &string(14) "obj->b.changed" 283: } 284: object(stdClass)#%d (3) { 285: ["a"]=> 286: &string(14) "obj->c.changed" 287: ["b"]=> 288: &string(14) "obj->c.changed" 289: ["c"]=> 290: &string(14) "obj->c.changed" 291: } 292: 293: 294: --- a,b,c eq container: 295: object(stdClass)#%d (3) { 296: ["a"]=> 297: *RECURSION* 298: ["b"]=> 299: *RECURSION* 300: ["c"]=> 301: *RECURSION* 302: } 303: string(55) "O:8:"stdClass":3:{s:1:"a";r:1;s:1:"b";r:1;s:1:"c";r:1;}" 304: object(stdClass)#%d (3) { 305: ["a"]=> 306: *RECURSION* 307: ["b"]=> 308: *RECURSION* 309: ["c"]=> 310: *RECURSION* 311: } 312: object(stdClass)#%d (3) { 313: ["a"]=> 314: string(14) "obj->a.changed" 315: ["b"]=> 316: *RECURSION* 317: ["c"]=> 318: *RECURSION* 319: } 320: object(stdClass)#%d (3) { 321: ["a"]=> 322: string(14) "obj->a.changed" 323: ["b"]=> 324: string(14) "obj->b.changed" 325: ["c"]=> 326: *RECURSION* 327: } 328: object(stdClass)#%d (3) { 329: ["a"]=> 330: string(14) "obj->a.changed" 331: ["b"]=> 332: string(14) "obj->b.changed" 333: ["c"]=> 334: string(14) "obj->c.changed" 335: } 336: Done