#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 PROTECTED] >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. ------------------------ [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
#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 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
#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 http://bugs.php.net/?id=40757&edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=40757&r=trysnapshot44 Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=40757&r=trysnapshot52 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=40757&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=40757&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=40757&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=40757&r=needtrace Need Reproduce Script:http://bugs.php.net/fix.php?id=40757&r=needscript Try newer version:http://bugs.php.net/fix.php?id=40757&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=40757&r=support Expected behavior:http://bugs.php.net/fix.php?id=40757&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=40757&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=40757&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=40757&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=40757&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=40757&r=dst IIS Stability:http://bugs.php.net/fix.php?id=40757&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=40757&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=40757&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=40757&r=nozend MySQL Configuration Error:http://bugs.php.net/fix.php?id=40757&r=mysqlcfg