ID: 24915 Comment by: myle34 at hotmail dot com Reported By: tater at potatoe dot com Status: Open Bug Type: Zend Engine 2 problem Operating System: OS X 10.2 PHP Version: 5CVS-2003-08-02 (dev) New Comment:
I have the same problem. What I would ideally like it to do is for isset to check whether it gets a legitimate (not NULL) value from __get() and then decide whether the variable passed to isset is set or not. An alternative could be to have an isset_get or something to check that it gets a good (not NULL) value returned from the __get() function. Previous Comments: ------------------------------------------------------------------------ [2003-08-02 07:12:58] tater at potatoe dot com Description: ------------ Given a "property" that is really being handled by __get() and __set() functions, you are allowed to use it with empty() and isset() without errors or warnings, but they always report that the property is empty/not-set. I understand that this may not be a bug, but a "feature" of PHP 5 - i.e., just the way it works - but if that is true, please be kind enough to say so explicitly. It is not helpful to mark bugs as Bogus with comments like "I suggest you read ZEND_CHANGES :)" If it is to be expected, it might be good to throw the same kind of error that one would see if trying to use empty() on a function call, if that's possible. This is possibly related to bug #24436. Reproduce code: --------------- class foo { private $_x; private function __get($p) { return $this->_x; } private function __set($p,$v) { $this->_x = $v; } } $y = new foo; $y->x = 12; if (empty($y->x)) print "y->x is empty: {$y->x} \n"; else print "y->x is not empty: {$y->x} \n"; if (isset($y->x)) print "y->x is set: {$y->x} \n"; else print "y->x is not set: {$y->x} \n"; Expected result: ---------------- y->x is not empty: 12 y->x is set: 12 Actual result: -------------- y->x is empty: 12 y->x is not set: 12 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=24915&edit=1