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