Annotation of embedaddon/php/Zend/tests/bug28444.phpt, revision 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>