ID: 28765 Updated by: [EMAIL PROTECTED] Reported By: chall5 at tampabay dot rr dot com -Status: Open +Status: Bogus Bug Type: Class/Object related -Operating System: linux fedora core 2 +Operating System: * PHP Version: 5.0.0RC3 New Comment:
Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Overloaded classes (like mysqli) handle some of their members virtual. That means they do not give you direct read or write access nor do they publish those members. Previous Comments: ------------------------------------------------------------------------ [2004-06-14 14:13:26] chall5 at tampabay dot rr dot com correcting my email address ------------------------------------------------------------------------ [2004-06-14 02:52:29] chall5 at tamapbay dot rr dot com and yes, i know i left my root mysql password in the code. its on a non-networked dev box, so it doesn't matter. ------------------------------------------------------------------------ [2004-06-14 02:49:09] chall5 at tampabay dot rr dot com Description: ------------ using get_object_vars() on a mysqli object returns an empty array. As I am able to access vars such as host_info via $mysqliObj->host_info, i would expect this to be a public var, which I would expect to be returned from get_object_vars($mysqliObj). to test this, i defined a test class with a public var, a private var, and a protected var. after instatiating the class an setting each of the vars to a string value, i called get_object_vars() on the object and as expected, only the public var was returned in the array from the function. I also tested get_class_methods() and get_class_vars() on the mysqli object. get_class_methods() does return an array of method names. get_class_vars() returns an empty array. these tests are NOT included in the attached code. Reproduce code: --------------- <?php class testClass { public $a; private $b; protected $c; public function test() { $this->a = "a"; $this->b = "b"; $this->c = "c"; } } $mysqli = new mysqli("localhost", "root", "vnbeRTC", "mysql"); echo "mysqli class:\n"; echo "host info: ".$mysqli->host_info."\n\n"; // direct access, public var??? echo "get_object_vars(\$mysqli)\n"; print_r(get_object_vars($mysqli)); // prints empty array $mysqli->close(); echo "\ntestClass class:\n"; $test = new testClass; $test->test(); echo "get_object_vars(\$test)\n"; print_r(get_object_vars($test)); // prints public vars only (expected) print_r(get_class_vars($test)); // strange output for protected var name ?> Expected result: ---------------- array returned from get_object_vars() on a mysqli object would return an array containing all public vars in the object. Actual result: -------------- the returned array was empty. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28765&edit=1