ID: 29291 Updated by: [EMAIL PROTECTED] Reported By: carl dot b at h2data dot com -Status: Open +Status: Closed Bug Type: Zend Engine 2 problem Operating System: * PHP Version: 5.0.0 Assigned To: helly New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2004-07-21 10:48:04] carl dot b at h2data dot com 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 this bug report at http://bugs.php.net/?id=29291&edit=1
