Annotation of embedaddon/php/ext/standard/tests/serialize/serialization_objects_012.phpt, revision 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>