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

1.1       misho       1: --TEST--
                      2: Bug #31402 (unserialize() generates references when it should not)
                      3: --INI--
                      4: error_reporting=E_ALL&~E_STRICT&~E_DEPRECATED
                      5: --FILE--
                      6: <?php 
                      7: 
                      8: class TestX {
                      9:   var $i;
                     10: 
                     11:   function __construct($i) {
                     12:     $this->i = $i;
                     13:   }
                     14: }
                     15: 
                     16: class TestY {
                     17:   var $A = array();
                     18:   var $B;
                     19: 
                     20:   function __construct() {
                     21:     $this->A[1] = new TestX(1);
                     22:     $this->A[2] = & new TestX(2);
                     23:     $this->A[3] = & $this->A[2];
                     24:     $this->B = $this->A[1];
                     25:   }
                     26: }
                     27: 
                     28: $before = new TestY();
                     29: $ser = serialize($before);
                     30: $after = unserialize($ser);
                     31: 
                     32: var_dump($before, $after);
                     33: 
                     34: ?>
                     35: ===DONE===
                     36: --EXPECTF--
                     37: object(TestY)#%d (2) {
                     38:   ["A"]=>
                     39:   array(3) {
                     40:     [1]=>
                     41:     object(TestX)#%d (1) {
                     42:       ["i"]=>
                     43:       int(1)
                     44:     }
                     45:     [2]=>
                     46:     &object(TestX)#%d (1) {
                     47:       ["i"]=>
                     48:       int(2)
                     49:     }
                     50:     [3]=>
                     51:     &object(TestX)#%d (1) {
                     52:       ["i"]=>
                     53:       int(2)
                     54:     }
                     55:   }
                     56:   ["B"]=>
                     57:   object(TestX)#%d (1) {
                     58:     ["i"]=>
                     59:     int(1)
                     60:   }
                     61: }
                     62: object(TestY)#%d (2) {
                     63:   ["A"]=>
                     64:   array(3) {
                     65:     [1]=>
                     66:     object(TestX)#%d (1) {
                     67:       ["i"]=>
                     68:       int(1)
                     69:     }
                     70:     [2]=>
                     71:     &object(TestX)#%d (1) {
                     72:       ["i"]=>
                     73:       int(2)
                     74:     }
                     75:     [3]=>
                     76:     &object(TestX)#%d (1) {
                     77:       ["i"]=>
                     78:       int(2)
                     79:     }
                     80:   }
                     81:   ["B"]=>
                     82:   object(TestX)#%d (1) {
                     83:     ["i"]=>
                     84:     int(1)
                     85:   }
                     86: }
                     87: ===DONE===

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