Annotation of embedaddon/php/ext/standard/tests/serialize/bug36424.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Bug #36424 - Serializable interface breaks object references
        !             3: --FILE--
        !             4: <?php
        !             5: 
        !             6: echo "-TEST\n";
        !             7: 
        !             8: class a implements Serializable {
        !             9:     function serialize() {
        !            10:         return serialize(get_object_vars($this));
        !            11:     }
        !            12:     function unserialize($s) {
        !            13:         foreach (unserialize($s) as $p=>$v) {
        !            14:             $this->$p=$v;
        !            15:         }
        !            16:     }
        !            17: }
        !            18: class b extends a {}
        !            19: class c extends b {}
        !            20: 
        !            21: $c = new c;
        !            22: $c->a = new a;
        !            23: $c->a->b = new b;
        !            24: $c->a->b->c = $c;
        !            25: $c->a->c = $c;
        !            26: $c->a->b->a = $c->a;
        !            27: $c->a->a = $c->a;
        !            28: 
        !            29: $s = serialize($c);
        !            30: printf("%s\n", $s);
        !            31: 
        !            32: $d = unserialize($s);
        !            33: 
        !            34: var_dump(
        !            35:     $d === $d->a->b->c,
        !            36:     $d->a->a === $d->a,
        !            37:     $d->a->b->a === $d->a,
        !            38:     $d->a->c === $d
        !            39: );
        !            40: 
        !            41: print_r($d);
        !            42: 
        !            43: echo "Done\n";
        !            44: 
        !            45: ?>
        !            46: --EXPECTF--
        !            47: %aTEST
        !            48: C:1:"c":108:{a:1:{s:1:"a";C:1:"a":81:{a:3:{s:1:"b";C:1:"b":30:{a:2:{s:1:"c";r:1;s:1:"a";r:3;}}s:1:"c";r:1;s:1:"a";r:3;}}}}
        !            49: bool(true)
        !            50: bool(true)
        !            51: bool(true)
        !            52: bool(true)
        !            53: c Object
        !            54: (
        !            55:     [a] => a Object
        !            56:         (
        !            57:             [b] => b Object
        !            58:                 (
        !            59:                     [c] => c Object
        !            60:  *RECURSION*
        !            61:                     [a] => a Object
        !            62:  *RECURSION*
        !            63:                 )
        !            64: 
        !            65:             [c] => c Object
        !            66:  *RECURSION*
        !            67:             [a] => a Object
        !            68:  *RECURSION*
        !            69:         )
        !            70: 
        !            71: )
        !            72: Done

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