|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2009-07-09 20:36 UTC] jani@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Nov 25 14:00:01 2025 UTC |
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] => )