Annotation of embedaddon/php/Zend/tests/bug28444.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Bug #28444 (Cannot access undefined property for object with overloaded property access)
                      3: --FILE--
                      4: <?php
                      5: 
                      6: function my_error_handler($errno, $errstr, $errfile, $errline) {
                      7:        var_dump($errstr);
                      8: }
                      9: 
                     10: set_error_handler('my_error_handler');
                     11: 
                     12: class Object
                     13: {
                     14:        public $x;
                     15: 
                     16:        function __construct($x)
                     17:        {
                     18:                $this->x = $x;
                     19:        }
                     20: }
                     21: 
                     22: class Overloaded
                     23: {
                     24:        public $props = array();
                     25:        public $x;
                     26: 
                     27:        function __construct($x)
                     28:        {
                     29:                $this->x = new Object($x);
                     30:        }
                     31: 
                     32:        function __get($prop)
                     33:        {
                     34:                echo __METHOD__ . "($prop)\n";
                     35:                return $this->props[$prop];
                     36:        }
                     37: 
                     38:        function __set($prop, $val)
                     39:        {
                     40:                echo __METHOD__ . "($prop,$val)\n";
                     41:                $this->props[$prop] = $val;
                     42:        }
                     43: }
                     44: $y = new Overloaded(2);
                     45: var_dump($y->x);
                     46: var_dump($y->x->x);
                     47: var_dump($y->x->x = 3);
                     48: var_dump($y->y = 3);
                     49: var_dump($y->y);
                     50: var_dump($y->z = new Object(4));
                     51: var_dump($y->z->x);
                     52: $t = $y->z;
                     53: var_dump($t->x = 5);
                     54: var_dump($y->z->x = 6);
                     55: 
                     56: ?>
                     57: ===DONE===
                     58: --EXPECTF--
                     59: object(Object)#%d (1) {
                     60:   ["x"]=>
                     61:   int(2)
                     62: }
                     63: int(2)
                     64: int(3)
                     65: Overloaded::__set(y,3)
                     66: int(3)
                     67: Overloaded::__get(y)
                     68: int(3)
                     69: string(55) "Object of class Object could not be converted to string"
                     70: Overloaded::__set(z,)
                     71: object(Object)#%d (1) {
                     72:   ["x"]=>
                     73:   int(4)
                     74: }
                     75: Overloaded::__get(z)
                     76: int(4)
                     77: Overloaded::__get(z)
                     78: int(5)
                     79: Overloaded::__get(z)
                     80: int(6)
                     81: ===DONE===

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