ID: 45199 Updated by: j...@php.net Reported By: mehran20 at hotmail dot com -Status: Verified +Status: Bogus Bug Type: Scripting Engine problem Operating System: * PHP Version: 5.*, 6CVS (2009-04-25) New Comment:
See bug #30659 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