Ask a Question related to PHP Bugs, Design and Development.
-
nrspark at 163 dot com #1
#40757 [NEW]: get_object_vars get nothing in child class
From: nrspark at 163 dot com
Operating system: Windows XP
PHP version: 5.2.1
PHP Bug Type: Class/Object related
Bug description: get_object_vars get nothing in child class
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 bug report at [url]http://bugs.php.net/?id=40757&edit=1[/url]
--
Try a CVS snapshot (PHP 4.4): [url]http://bugs.php.net/fix.php?id=40757&r=trysnapshot44[/url]
Try a CVS snapshot (PHP 5.2): [url]http://bugs.php.net/fix.php?id=40757&r=trysnapshot52[/url]
Try a CVS snapshot (PHP 6.0): [url]http://bugs.php.net/fix.php?id=40757&r=trysnapshot60[/url]
Fixed in CVS: [url]http://bugs.php.net/fix.php?id=40757&r=fixedcvs[/url]
Fixed in release: [url]http://bugs.php.net/fix.php?id=40757&r=alreadyfixed[/url]
Need backtrace: [url]http://bugs.php.net/fix.php?id=40757&r=needtrace[/url]
Need Reproduce Script: [url]http://bugs.php.net/fix.php?id=40757&r=needscript[/url]
Try newer version: [url]http://bugs.php.net/fix.php?id=40757&r=oldversion[/url]
Not developer issue: [url]http://bugs.php.net/fix.php?id=40757&r=support[/url]
Expected behavior: [url]http://bugs.php.net/fix.php?id=40757&r=notwrong[/url]
Not enough info: [url]http://bugs.php.net/fix.php?id=40757&r=notenoughinfo[/url]
Submitted twice: [url]http://bugs.php.net/fix.php?id=40757&r=submittedtwice[/url]
register_globals: [url]http://bugs.php.net/fix.php?id=40757&r=globals[/url]
PHP 3 support discontinued: [url]http://bugs.php.net/fix.php?id=40757&r=php3[/url]
Daylight Savings: [url]http://bugs.php.net/fix.php?id=40757&r=dst[/url]
IIS Stability: [url]http://bugs.php.net/fix.php?id=40757&r=isapi[/url]
Install GNU Sed: [url]http://bugs.php.net/fix.php?id=40757&r=gnused[/url]
Floating point limitations: [url]http://bugs.php.net/fix.php?id=40757&r=float[/url]
No Zend Extensions: [url]http://bugs.php.net/fix.php?id=40757&r=nozend[/url]
MySQL Configuration Error: [url]http://bugs.php.net/fix.php?id=40757&r=mysqlcfg[/url]
nrspark at 163 dot com Guest
-
#33314 [NoF->Opn]: Child class variable change not propogated during function call
ID: 33314 User updated by: gregory dot szorc at case dot edu Reported By: gregory dot szorc at case dot edu -Status: ... -
#33314 [Com]: Child class variable change not propogated during function call
ID: 33314 Comment by: andrew at azarov dot com Reported By: gregory dot szorc at case dot edu Status: No... -
Parent/Child relations - Trying to access child control for save
I have a parent datagrid that has my customer information. For each customer I have a child datagrid with all their part information. In the... -
[PHP-DEV] Accessing child constants from base class
PHP5 10/10/2003 CVS. Currently, I don't see an easy way of accessing the constants of a child class from a base class. Consider the following... -
#23038 [Com]: PHP does not detect parent class inside child class' constructor
ID: 23038 Comment by: hewei at ied dot org dot cn Reported By: black at sunshine dot krneki dot org Status: ... -
tony2001@php.net #2
#40757 [Opn->Bgs]: get_object_vars get nothing in child class
ID: 40757
Updated by: [email]tony2001@php.net[/email]
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:
I would be very surprised to be able to access private properties of
Base in the context of Child.
What you see is expected.
Previous Comments:
------------------------------------------------------------------------
[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 [url]http://bugs.php.net/?id=40757&edit=1[/url]
tony2001@php.net Guest
-
nrspark at 163 dot com #3
#40757 [Bgs->Opn]: get_object_vars get nothing in child class
ID: 40757
User updated by: nrspark at 163 dot com
Reported By: nrspark at 163 dot com
-Status: Bogus
+Status: Open
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);
}
and it work expect in java using reflection
think about: Liskov Substitution Principle
i thing this is the implemention bug of get_object_vars
Previous Comments:
------------------------------------------------------------------------
[2007-03-09 10:14:42] [email]tony2001@php.net[/email]
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 [url]http://bugs.php.net/?id=40757&edit=1[/url]
nrspark at 163 dot com Guest
-
tony2001@php.net #4
#40757 [Opn->Bgs]: get_object_vars get nothing in child class
ID: 40757
Updated by: [email]tony2001@php.net[/email]
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:
Surely Base class can access it's own private properties.>but it works expect if the method change to this
>function getFields($obj){ return array('p1'=>$obj->p1); }
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]tony2001@php.net[/email]
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 [url]http://bugs.php.net/?id=40757&edit=1[/url]
tony2001@php.net Guest
-
nrspark at 163 dot com #5
#40757 [Bgs->Opn]: get_object_vars get nothing in child class
ID: 40757
User updated by: nrspark at 163 dot com
Reported By: nrspark at 163 dot com
-Status: Bogus
+Status: Open
Bug Type: Class/Object related
Operating System: Windows XP
PHP Version: 5.2.1
New Comment:
code 1: use get_object_vars
1>I would be very surprised to be able to access private properties of
1>Base in the context of Child.
code 2: direct access
2>Surely Base class can access it's own private properties.
2>The method belongs to the Base and is executed in it's scope.
$child=new Child();
$child->getFields(new Base());
what is the context of the method? base or child?
the result direct access and get_object_vars must be the same.
it is a bug that the get_object_vars function do not check the method
belongs to, but just check the object class call the method.
Previous Comments:
------------------------------------------------------------------------
[2007-03-13 11:38:52] [email]tony2001@php.net[/email]
Surely Base class can access it's own private properties.>but it works expect if the method change to this
>function getFields($obj){ return array('p1'=>$obj->p1); }
The method belongs to the Base and is executed in it's scope.
------------------------------------------------------------------------
[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]tony2001@php.net[/email]
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 [url]http://bugs.php.net/?id=40757&edit=1[/url]
nrspark at 163 dot com Guest



Reply With Quote

