From: carl dot b at h2data dot com
Operating system:
PHP version: 5.0.0
PHP Bug Type: Zend Engine 2 problem
Bug description: get_class_vars() return names with NULLs
Description:
------------
The keys in the array returned by get_class_vars() contains NULLs if the
field (or variable) is protected or private.
A more exact description of the syntax of the keys is listed below.
protected: "\x00*\x00<fieldname>"
private: "\x00<classname>\x00<fieldname>"
public: "<fieldname>"
Ok, it's a way to determine the access modifiers of the fields, but as the
strings starts with NULL, most PHP functions will think the string is empty
as it begins with a null (null-terminated strings). Example is
preg_match().
In any case, get_class_vars() isn't supposed to do this kind of work; so
any hint of the access shouldn't be included.
BTW, is get_class_vars() supposed to only return public fields? As the
docs doesn't mentions it, I've assumed not.
Reproduce code:
---------------
<?php
class MyClass {
protected $AProtectedField = "orange";
private $APrivateField = "apple";
public $APublicField = "strawberry";
}
$fields = get_class_vars('MyClass');
foreach($fields as $name => $value) {
echo "$name : $value\n";
}
?>
Expected result:
----------------
AProtectedField : orange
APrivateField : apple
APublicField : strawberry
Actual result:
--------------
\x00*\x00AProtectedField : orange
\x00MyClass\x00APrivateField : apple
APublicField : strawberry
--
Edit bug report at http://bugs.php.net/?id=29291&edit=1
--
Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=29291&r=trysnapshot4
Try a CVS snapshot (php5): http://bugs.php.net/fix.php?id=29291&r=trysnapshot5
Fixed in CVS: http://bugs.php.net/fix.php?id=29291&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=29291&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=29291&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=29291&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=29291&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=29291&r=support
Expected behavior: http://bugs.php.net/fix.php?id=29291&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=29291&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=29291&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=29291&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=29291&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=29291&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=29291&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=29291&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=29291&r=float