#40757 [Bgs->Opn]: get_object_vars get nothing in child class

2007-03-13 Thread nrspark at 163 dot com
 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

2007-03-09 Thread nrspark at 163 dot com
 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

2007-03-08 Thread nrspark at 163 dot com
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