From: tater at potatoe dot com Operating system: OS X 10.2 PHP version: 5CVS-2003-08-02 (dev) PHP Bug Type: Zend Engine 2 problem Bug description: empty()/isset() misleading with __get/__set
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 bug report at http://bugs.php.net/?id=24915&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=24915&r=trysnapshot4 Try a CVS snapshot (php5): http://bugs.php.net/fix.php?id=24915&r=trysnapshot5 Fixed in CVS: http://bugs.php.net/fix.php?id=24915&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=24915&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=24915&r=needtrace Try newer version: http://bugs.php.net/fix.php?id=24915&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=24915&r=support Expected behavior: http://bugs.php.net/fix.php?id=24915&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=24915&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=24915&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=24915&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=24915&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=24915&r=dst IIS Stability: http://bugs.php.net/fix.php?id=24915&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=24915&r=gnused