Return to bug63462.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / Zend / tests |
1.1 ! misho 1: --TEST-- ! 2: Test script to verify that magic methods should be called only once when accessing an unset property. ! 3: --CREDITS-- ! 4: Marco Pivetta <ocramius@gmail.com> ! 5: --FILE-- ! 6: <?php ! 7: class Test { ! 8: public $publicProperty; ! 9: protected $protectedProperty; ! 10: private $privateProperty; ! 11: ! 12: public function __construct() { ! 13: unset( ! 14: $this->publicProperty, ! 15: $this->protectedProperty, ! 16: $this->privateProperty ! 17: ); ! 18: } ! 19: ! 20: function __get($name) { ! 21: echo '__get ' . $name . "\n"; ! 22: return $this->$name; ! 23: } ! 24: ! 25: function __set($name, $value) { ! 26: echo '__set ' . $name . "\n"; ! 27: $this->$name = $value; ! 28: } ! 29: ! 30: function __isset($name) { ! 31: echo '__isset ' . $name . "\n"; ! 32: return isset($this->$name); ! 33: } ! 34: } ! 35: ! 36: $test = new Test(); ! 37: ! 38: $test->nonExisting; ! 39: $test->publicProperty; ! 40: $test->protectedProperty; ! 41: $test->privateProperty; ! 42: isset($test->nonExisting); ! 43: isset($test->publicProperty); ! 44: isset($test->protectedProperty); ! 45: isset($test->privateProperty); ! 46: $test->nonExisting = 'value'; ! 47: $test->publicProperty = 'value'; ! 48: $test->protectedProperty = 'value'; ! 49: $test->privateProperty = 'value'; ! 50: ! 51: ?> ! 52: ! 53: --EXPECTF-- ! 54: __get nonExisting ! 55: ! 56: Notice: Undefined property: Test::$nonExisting in %s on line %d ! 57: __get publicProperty ! 58: ! 59: Notice: Undefined property: Test::$publicProperty in %s on line %d ! 60: __get protectedProperty ! 61: ! 62: Notice: Undefined property: Test::$protectedProperty in %s on line %d ! 63: __get privateProperty ! 64: ! 65: Notice: Undefined property: Test::$privateProperty in %s on line %d ! 66: __isset nonExisting ! 67: __isset publicProperty ! 68: __isset protectedProperty ! 69: __isset privateProperty ! 70: __set nonExisting ! 71: __set publicProperty ! 72: __set protectedProperty ! 73: __set privateProperty ! 74: