From: dominics at gmail dot com Operating system: Windows/Linux PHP version: 5.2.4RC1 PHP Bug Type: Class/Object related Bug description: property_exists() fails to find protected properties from a parent class
Description: ------------ When using property_exists() from a parent class, and checking for the existence of a protected property in the subclass, property_exists() fails to find the property. The documentation for property_exists() says that the property must be 'accessible from the current scope'. In this case, the property _is_, because A is a parent class and protected visibility is defined in the documentation as 'limits access to inherited and parent classes'. As further evidence that protectedBar is accessible from foo(), trying to manipulate privateBar causes an error, while manipulating protectedBar doesn't. Reproduce code: --------------- <?php class A { function foo() { var_dump(property_exists('B', 'publicBar')); var_dump(property_exists('B', 'protectedBar')); var_dump(property_exists('B', 'privateBar')); } } class B extends A { public $publicBar; protected $protectedBar; private $privateBar; } $b = new B(); $b->foo(); Expected result: ---------------- bool(true) bool(true) bool(false) Actual result: -------------- bool(true) bool(false) bool(false) -- Edit bug report at http://bugs.php.net/?id=42211&edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=42211&r=trysnapshot44 Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=42211&r=trysnapshot52 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=42211&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=42211&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=42211&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=42211&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=42211&r=needscript Try newer version: http://bugs.php.net/fix.php?id=42211&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=42211&r=support Expected behavior: http://bugs.php.net/fix.php?id=42211&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=42211&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=42211&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=42211&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=42211&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=42211&r=dst IIS Stability: http://bugs.php.net/fix.php?id=42211&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=42211&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=42211&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=42211&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=42211&r=mysqlcfg