Annotation of embedaddon/php/ext/standard/tests/serialize/serialization_objects_014.phpt, revision 1.1.1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>