ID: 45199 Updated by: [EMAIL PROTECTED] Reported By: mehran20 at hotmail dot com -Status: Open +Status: Bogus Bug Type: Class/Object related Operating System: CentOS / Linux PHP Version: 5.2.6 New Comment:
RTFM: "Private limits visibility only to the class that defines the item." Previous Comments: ------------------------------------------------------------------------ [2008-06-07 09:02:39] mehran20 at hotmail dot com Description: ------------ Hi Before you read the code, I want to say that the code that is given in this section works fine. The only problem is for the code that is given in the "Reproduce code". class A { private $a = 1; } class B extends A { private $b = 2; } $v = new B; print_r(unserialize(serialize($v))); Output (which is correct): B Object ( [b:private] => 2 [a:private] => 1 ) Reproduce code: --------------- class A { private $a = 1; public function __sleep() { $vars = get_object_vars($this); return array_keys($vars); } } class B extends A { private $b = 2; } $v = new B; print_r(unserialize(serialize($v))); Expected result: ---------------- B Object ( [b:private] => 2 [a:private] => 1 ) Or B Object ( [b:private] => 2 ) I prefer the first one! But both could be correct!! Actual result: -------------- Notice: serialize() [function.serialize]: "a" returned as member variable from __sleep() but does not exist in <__FILE__> on line 14 B Object ( [b:private] => 2 [a:private] => 1 [a] => ) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=45199&edit=1