ID: 40757
Updated by: [EMAIL PROTECTED]
Reported By: nrspark at 163 dot com
-Status: Open
+Status: Bogus
Bug Type: Class/Object related
Operating System: Windows XP
PHP Version: 5.2.1
New Comment:
>but it works expect if the method change to this
>function getFields($obj){ return array('p1'=>$obj->p1); }
Surely Base class can access it's own private properties.
The method belongs to the Base and is executed in it's scope.
Previous Comments:
------------------------------------------------------------------------
[2007-03-09 13:06:23] nrspark at 163 dot com
but it works expect if the method change to this
function getFields($obj){
return array('p1'=>$obj->p1);
}
and it work expect in java using reflection
think about: Liskov Substitution Principle
i thing this is the implemention bug of get_object_vars
------------------------------------------------------------------------
[2007-03-09 10:14:42] [EMAIL PROTECTED]
I would be very surprised to be able to access private properties of
Base in the context of Child.
What you see is expected.
------------------------------------------------------------------------
[2007-03-08 12:05:12] nrspark at 163 dot com
Description:
------------
method to get the private properties of the base object
in base class object, everything ok
in child class use inherit method, get empty
Reproduce code:
---------------
class Base {
private $p1='sadf';
function getFields($obj){
return get_object_vars($obj);
}
}
class Child extends Base { }
$base=new Base();
print_r($base->getFields(new Base()));
$child=new Child();
print_r($child->getFields(new Base()));
Expected result:
----------------
Array ( [p1] => sadf )Array ( [p1] => sadf )
Actual result:
--------------
Array ( [p1] => sadf ) Array ( )
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=40757&edit=1