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

1.1       misho       1: --TEST--
                      2: Object serialization / unserialization: references amongst properties 
                      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 b:\n";
                     34: $obj = new stdClass;
                     35: $obj->a = &$obj->b;
                     36: $obj->b = 1;
                     37: $obj->c = 1;
                     38: check($obj);
                     39: 
                     40: echo "\n\n--- a refs c:\n";
                     41: $obj = new stdClass;
                     42: $obj->a = &$obj->c;
                     43: $obj->b = 1;
                     44: $obj->c = 1;
                     45: check($obj);
                     46: 
                     47: echo "\n\n--- b refs a:\n";
                     48: $obj = new stdClass;
                     49: $obj->a = 1;
                     50: $obj->b = &$obj->a;
                     51: $obj->c = 1;
                     52: check($obj);
                     53: 
                     54: echo "\n\n--- b refs c:\n";
                     55: $obj = new stdClass;
                     56: $obj->a = 1;
                     57: $obj->b = &$obj->c;
                     58: $obj->c = 1;
                     59: check($obj);
                     60: 
                     61: echo "\n\n--- c refs a:\n";
                     62: $obj = new stdClass;
                     63: $obj->a = 1;
                     64: $obj->b = 1;
                     65: $obj->c = &$obj->a;
                     66: check($obj);
                     67: 
                     68: echo "\n\n--- c refs b:\n";
                     69: $obj = new stdClass;
                     70: $obj->a = 1;
                     71: $obj->b = 1;
                     72: $obj->c = &$obj->b;
                     73: check($obj);
                     74: 
                     75: echo "\n\n--- a,b refs c:\n";
                     76: $obj = new stdClass;
                     77: $obj->a = &$obj->c;
                     78: $obj->b = &$obj->c;
                     79: $obj->c = 1;
                     80: check($obj);
                     81: 
                     82: echo "\n\n--- a,c refs b:\n";
                     83: $obj = new stdClass;
                     84: $obj->a = &$obj->b;
                     85: $obj->b = 1;
                     86: $obj->c = &$obj->b;
                     87: check($obj);
                     88: 
                     89: echo "\n\n--- b,c refs a:\n";
                     90: $obj = new stdClass;
                     91: $obj->a = 1;
                     92: $obj->b = &$obj->a;
                     93: $obj->c = &$obj->a;
                     94: check($obj);
                     95: 
                     96: echo "Done";
                     97: ?>
                     98: --EXPECTF--
                     99: 
                    100: --- a refs b:
                    101: object(stdClass)#%d (3) {
                    102:   ["b"]=>
                    103:   &int(1)
                    104:   ["a"]=>
                    105:   &int(1)
                    106:   ["c"]=>
                    107:   int(1)
                    108: }
                    109: string(55) "O:8:"stdClass":3:{s:1:"b";i:1;s:1:"a";R:2;s:1:"c";i:1;}"
                    110: object(stdClass)#%d (3) {
                    111:   ["b"]=>
                    112:   &int(1)
                    113:   ["a"]=>
                    114:   &int(1)
                    115:   ["c"]=>
                    116:   int(1)
                    117: }
                    118: object(stdClass)#%d (3) {
                    119:   ["b"]=>
                    120:   &string(14) "obj->a.changed"
                    121:   ["a"]=>
                    122:   &string(14) "obj->a.changed"
                    123:   ["c"]=>
                    124:   int(1)
                    125: }
                    126: object(stdClass)#%d (3) {
                    127:   ["b"]=>
                    128:   &string(14) "obj->b.changed"
                    129:   ["a"]=>
                    130:   &string(14) "obj->b.changed"
                    131:   ["c"]=>
                    132:   int(1)
                    133: }
                    134: object(stdClass)#%d (3) {
                    135:   ["b"]=>
                    136:   &string(14) "obj->b.changed"
                    137:   ["a"]=>
                    138:   &string(14) "obj->b.changed"
                    139:   ["c"]=>
                    140:   string(14) "obj->c.changed"
                    141: }
                    142: 
                    143: 
                    144: --- a refs c:
                    145: object(stdClass)#%d (3) {
                    146:   ["c"]=>
                    147:   &int(1)
                    148:   ["a"]=>
                    149:   &int(1)
                    150:   ["b"]=>
                    151:   int(1)
                    152: }
                    153: string(55) "O:8:"stdClass":3:{s:1:"c";i:1;s:1:"a";R:2;s:1:"b";i:1;}"
                    154: object(stdClass)#%d (3) {
                    155:   ["c"]=>
                    156:   &int(1)
                    157:   ["a"]=>
                    158:   &int(1)
                    159:   ["b"]=>
                    160:   int(1)
                    161: }
                    162: object(stdClass)#%d (3) {
                    163:   ["c"]=>
                    164:   &string(14) "obj->a.changed"
                    165:   ["a"]=>
                    166:   &string(14) "obj->a.changed"
                    167:   ["b"]=>
                    168:   int(1)
                    169: }
                    170: object(stdClass)#%d (3) {
                    171:   ["c"]=>
                    172:   &string(14) "obj->a.changed"
                    173:   ["a"]=>
                    174:   &string(14) "obj->a.changed"
                    175:   ["b"]=>
                    176:   string(14) "obj->b.changed"
                    177: }
                    178: object(stdClass)#%d (3) {
                    179:   ["c"]=>
                    180:   &string(14) "obj->c.changed"
                    181:   ["a"]=>
                    182:   &string(14) "obj->c.changed"
                    183:   ["b"]=>
                    184:   string(14) "obj->b.changed"
                    185: }
                    186: 
                    187: 
                    188: --- b refs a:
                    189: object(stdClass)#%d (3) {
                    190:   ["a"]=>
                    191:   &int(1)
                    192:   ["b"]=>
                    193:   &int(1)
                    194:   ["c"]=>
                    195:   int(1)
                    196: }
                    197: string(55) "O:8:"stdClass":3:{s:1:"a";i:1;s:1:"b";R:2;s:1:"c";i:1;}"
                    198: object(stdClass)#%d (3) {
                    199:   ["a"]=>
                    200:   &int(1)
                    201:   ["b"]=>
                    202:   &int(1)
                    203:   ["c"]=>
                    204:   int(1)
                    205: }
                    206: object(stdClass)#%d (3) {
                    207:   ["a"]=>
                    208:   &string(14) "obj->a.changed"
                    209:   ["b"]=>
                    210:   &string(14) "obj->a.changed"
                    211:   ["c"]=>
                    212:   int(1)
                    213: }
                    214: object(stdClass)#%d (3) {
                    215:   ["a"]=>
                    216:   &string(14) "obj->b.changed"
                    217:   ["b"]=>
                    218:   &string(14) "obj->b.changed"
                    219:   ["c"]=>
                    220:   int(1)
                    221: }
                    222: object(stdClass)#%d (3) {
                    223:   ["a"]=>
                    224:   &string(14) "obj->b.changed"
                    225:   ["b"]=>
                    226:   &string(14) "obj->b.changed"
                    227:   ["c"]=>
                    228:   string(14) "obj->c.changed"
                    229: }
                    230: 
                    231: 
                    232: --- b refs c:
                    233: object(stdClass)#%d (3) {
                    234:   ["a"]=>
                    235:   int(1)
                    236:   ["c"]=>
                    237:   &int(1)
                    238:   ["b"]=>
                    239:   &int(1)
                    240: }
                    241: string(55) "O:8:"stdClass":3:{s:1:"a";i:1;s:1:"c";i:1;s:1:"b";R:3;}"
                    242: object(stdClass)#%d (3) {
                    243:   ["a"]=>
                    244:   int(1)
                    245:   ["c"]=>
                    246:   &int(1)
                    247:   ["b"]=>
                    248:   &int(1)
                    249: }
                    250: object(stdClass)#%d (3) {
                    251:   ["a"]=>
                    252:   string(14) "obj->a.changed"
                    253:   ["c"]=>
                    254:   &int(1)
                    255:   ["b"]=>
                    256:   &int(1)
                    257: }
                    258: object(stdClass)#%d (3) {
                    259:   ["a"]=>
                    260:   string(14) "obj->a.changed"
                    261:   ["c"]=>
                    262:   &string(14) "obj->b.changed"
                    263:   ["b"]=>
                    264:   &string(14) "obj->b.changed"
                    265: }
                    266: object(stdClass)#%d (3) {
                    267:   ["a"]=>
                    268:   string(14) "obj->a.changed"
                    269:   ["c"]=>
                    270:   &string(14) "obj->c.changed"
                    271:   ["b"]=>
                    272:   &string(14) "obj->c.changed"
                    273: }
                    274: 
                    275: 
                    276: --- c refs a:
                    277: object(stdClass)#%d (3) {
                    278:   ["a"]=>
                    279:   &int(1)
                    280:   ["b"]=>
                    281:   int(1)
                    282:   ["c"]=>
                    283:   &int(1)
                    284: }
                    285: string(55) "O:8:"stdClass":3:{s:1:"a";i:1;s:1:"b";i:1;s:1:"c";R:2;}"
                    286: object(stdClass)#%d (3) {
                    287:   ["a"]=>
                    288:   &int(1)
                    289:   ["b"]=>
                    290:   int(1)
                    291:   ["c"]=>
                    292:   &int(1)
                    293: }
                    294: object(stdClass)#%d (3) {
                    295:   ["a"]=>
                    296:   &string(14) "obj->a.changed"
                    297:   ["b"]=>
                    298:   int(1)
                    299:   ["c"]=>
                    300:   &string(14) "obj->a.changed"
                    301: }
                    302: object(stdClass)#%d (3) {
                    303:   ["a"]=>
                    304:   &string(14) "obj->a.changed"
                    305:   ["b"]=>
                    306:   string(14) "obj->b.changed"
                    307:   ["c"]=>
                    308:   &string(14) "obj->a.changed"
                    309: }
                    310: object(stdClass)#%d (3) {
                    311:   ["a"]=>
                    312:   &string(14) "obj->c.changed"
                    313:   ["b"]=>
                    314:   string(14) "obj->b.changed"
                    315:   ["c"]=>
                    316:   &string(14) "obj->c.changed"
                    317: }
                    318: 
                    319: 
                    320: --- c refs b:
                    321: object(stdClass)#%d (3) {
                    322:   ["a"]=>
                    323:   int(1)
                    324:   ["b"]=>
                    325:   &int(1)
                    326:   ["c"]=>
                    327:   &int(1)
                    328: }
                    329: string(55) "O:8:"stdClass":3:{s:1:"a";i:1;s:1:"b";i:1;s:1:"c";R:3;}"
                    330: object(stdClass)#%d (3) {
                    331:   ["a"]=>
                    332:   int(1)
                    333:   ["b"]=>
                    334:   &int(1)
                    335:   ["c"]=>
                    336:   &int(1)
                    337: }
                    338: object(stdClass)#%d (3) {
                    339:   ["a"]=>
                    340:   string(14) "obj->a.changed"
                    341:   ["b"]=>
                    342:   &int(1)
                    343:   ["c"]=>
                    344:   &int(1)
                    345: }
                    346: object(stdClass)#%d (3) {
                    347:   ["a"]=>
                    348:   string(14) "obj->a.changed"
                    349:   ["b"]=>
                    350:   &string(14) "obj->b.changed"
                    351:   ["c"]=>
                    352:   &string(14) "obj->b.changed"
                    353: }
                    354: object(stdClass)#%d (3) {
                    355:   ["a"]=>
                    356:   string(14) "obj->a.changed"
                    357:   ["b"]=>
                    358:   &string(14) "obj->c.changed"
                    359:   ["c"]=>
                    360:   &string(14) "obj->c.changed"
                    361: }
                    362: 
                    363: 
                    364: --- a,b refs c:
                    365: object(stdClass)#%d (3) {
                    366:   ["c"]=>
                    367:   &int(1)
                    368:   ["a"]=>
                    369:   &int(1)
                    370:   ["b"]=>
                    371:   &int(1)
                    372: }
                    373: string(55) "O:8:"stdClass":3:{s:1:"c";i:1;s:1:"a";R:2;s:1:"b";R:2;}"
                    374: object(stdClass)#%d (3) {
                    375:   ["c"]=>
                    376:   &int(1)
                    377:   ["a"]=>
                    378:   &int(1)
                    379:   ["b"]=>
                    380:   &int(1)
                    381: }
                    382: object(stdClass)#%d (3) {
                    383:   ["c"]=>
                    384:   &string(14) "obj->a.changed"
                    385:   ["a"]=>
                    386:   &string(14) "obj->a.changed"
                    387:   ["b"]=>
                    388:   &string(14) "obj->a.changed"
                    389: }
                    390: object(stdClass)#%d (3) {
                    391:   ["c"]=>
                    392:   &string(14) "obj->b.changed"
                    393:   ["a"]=>
                    394:   &string(14) "obj->b.changed"
                    395:   ["b"]=>
                    396:   &string(14) "obj->b.changed"
                    397: }
                    398: object(stdClass)#%d (3) {
                    399:   ["c"]=>
                    400:   &string(14) "obj->c.changed"
                    401:   ["a"]=>
                    402:   &string(14) "obj->c.changed"
                    403:   ["b"]=>
                    404:   &string(14) "obj->c.changed"
                    405: }
                    406: 
                    407: 
                    408: --- a,c refs b:
                    409: object(stdClass)#%d (3) {
                    410:   ["b"]=>
                    411:   &int(1)
                    412:   ["a"]=>
                    413:   &int(1)
                    414:   ["c"]=>
                    415:   &int(1)
                    416: }
                    417: string(55) "O:8:"stdClass":3:{s:1:"b";i:1;s:1:"a";R:2;s:1:"c";R:2;}"
                    418: object(stdClass)#%d (3) {
                    419:   ["b"]=>
                    420:   &int(1)
                    421:   ["a"]=>
                    422:   &int(1)
                    423:   ["c"]=>
                    424:   &int(1)
                    425: }
                    426: object(stdClass)#%d (3) {
                    427:   ["b"]=>
                    428:   &string(14) "obj->a.changed"
                    429:   ["a"]=>
                    430:   &string(14) "obj->a.changed"
                    431:   ["c"]=>
                    432:   &string(14) "obj->a.changed"
                    433: }
                    434: object(stdClass)#%d (3) {
                    435:   ["b"]=>
                    436:   &string(14) "obj->b.changed"
                    437:   ["a"]=>
                    438:   &string(14) "obj->b.changed"
                    439:   ["c"]=>
                    440:   &string(14) "obj->b.changed"
                    441: }
                    442: object(stdClass)#%d (3) {
                    443:   ["b"]=>
                    444:   &string(14) "obj->c.changed"
                    445:   ["a"]=>
                    446:   &string(14) "obj->c.changed"
                    447:   ["c"]=>
                    448:   &string(14) "obj->c.changed"
                    449: }
                    450: 
                    451: 
                    452: --- b,c refs a:
                    453: object(stdClass)#%d (3) {
                    454:   ["a"]=>
                    455:   &int(1)
                    456:   ["b"]=>
                    457:   &int(1)
                    458:   ["c"]=>
                    459:   &int(1)
                    460: }
                    461: string(55) "O:8:"stdClass":3:{s:1:"a";i:1;s:1:"b";R:2;s:1:"c";R:2;}"
                    462: object(stdClass)#%d (3) {
                    463:   ["a"]=>
                    464:   &int(1)
                    465:   ["b"]=>
                    466:   &int(1)
                    467:   ["c"]=>
                    468:   &int(1)
                    469: }
                    470: object(stdClass)#%d (3) {
                    471:   ["a"]=>
                    472:   &string(14) "obj->a.changed"
                    473:   ["b"]=>
                    474:   &string(14) "obj->a.changed"
                    475:   ["c"]=>
                    476:   &string(14) "obj->a.changed"
                    477: }
                    478: object(stdClass)#%d (3) {
                    479:   ["a"]=>
                    480:   &string(14) "obj->b.changed"
                    481:   ["b"]=>
                    482:   &string(14) "obj->b.changed"
                    483:   ["c"]=>
                    484:   &string(14) "obj->b.changed"
                    485: }
                    486: object(stdClass)#%d (3) {
                    487:   ["a"]=>
                    488:   &string(14) "obj->c.changed"
                    489:   ["b"]=>
                    490:   &string(14) "obj->c.changed"
                    491:   ["c"]=>
                    492:   &string(14) "obj->c.changed"
                    493: }
                    494: Done

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