#29509 [Opn->Csd]: get_class_vars() returns unusable information

From: Date: Mon, 03 Apr 2006 12:05:17 +0000
Subject: #29509 [Opn->Csd]: get_class_vars() returns unusable information
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-95281@lists.php.net to get a copy of this message
ID: 29509 Updated by: tony2001@php.net Reported By: ap at ath0 dot org -Status: Open +Status: Closed Bug Type: Feature/Change Request Operating System: Linux 2.6.7 PHP Version: 5.0.0 New Comment: Fixed long time ago. Previous Comments: ------------------------------------------------------------------------ [2004-08-03 19:45:11] ap at ath0 dot org Description: ------------ When using get_class_vars() inside a class it does not act how it is documented on php.net. But that is not the main problem. It seems as if get_class_vars() is creating some strange identifiers in its resulting array, making it effictively unusable. I already found out, that protected members are prefixed by '*' and private members are prepended with the classname, but the identifier-string is longer, than it should be. When accessing my test-program with a web-browser there are some weird (probably multibyte) characters at the end of identifiers for protected and private members, which don't show up in a terminal using the CLI binary. I'm not sure if this behaviour is expected (since it's not documented), but there would be no point in having get_class_vars() returning something that cannot be used subsequently. And IMHO the Reflection-API behaves very differently; e.g. fetching class attributes in at least 5 lines (via Reflaction API) vs. a one-line call to fetch all attributes (via get_class_vars()). Reproduce code: --------------- class test { public $foo1; protected $foo2; private $foo3; public function __construct() { $this->foo1 = 'public'; $this->foo2 = 'protected'; $this->foo3 = 'private'; } } $bar = array_keys(get_class_vars('test')); var_dump($bar); Expected result: ---------------- array(3) { [0]=> string(4) "foo1" [1]=> string(5) "*foo2" [2]=> string(8) "testfoo3" } Actual result: -------------- array(3) { [0]=> string(4) "foo1" [1]=> string(7) "*foo2" [2]=> string(10) "testfoo3" } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=29509&edit=1

« previous php.bugs (#95281) next »