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

Reply via email to