ID: 36693
Comment by: nacho at ziggo dot nl
Reported By: iain at iaindooley dot com
Status: No Feedback
Bug Type: Class/Object related
Operating System: FreeBSD 6.0
PHP Version: 5.1.2
New Comment:
Correction (I was actually testing on another machine where 5.1 is
running). Actual output on 5.3.1 is:
array(3) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
}
array(5) {
["e"]=>
string(1) "e"
["f"]=>
string(1) "f"
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
}
While "a" should indeed not have to be visible to "Bar", as it is a
private property of "Foo", like the output of version 5.1 show, on 5.3.1
it seems as it is interchanged with the private property "d" of "Bar",
which should be visible to itself ("Bar").
Previous Comments:
------------------------------------------------------------------------
[2010-02-22 15:04:09] nacho at ziggo dot nl
Description:
------------
This seems to be broken again on version 5.3.1 (Debian/Apache)
Reproduce code:
---------------
<?php
class Foo {
private $a = 'a';
public $b = 'b';
protected $c = 'c';
public function __construct() {}
public function Export() {
$vars = get_object_vars($this);
return $vars;
}
}
class Bar extends Foo {
private $d = 'd';
public $e = 'e';
protected $f = 'f';
}
$foo = new Foo();
$bar = new Bar();
var_dump($foo->Export());
var_dump($bar->Export());
?>
Expected result:
----------------
array(3) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
}
array(5) {
["d"]=>
string(1) "d"
["e"]=>
string(1) "e"
["f"]=>
string(1) "f"
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
}
Actual result:
--------------
array(3) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
}
array(5) {
["d"]=>
string(1) "d"
["e"]=>
string(1) "e"
["f"]=>
string(1) "f"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
}
------------------------------------------------------------------------
[2006-08-16 21:13:52] [email protected]
That's correct behavior, since you're calling it outside of the object
scope.
------------------------------------------------------------------------
[2006-08-16 20:50:09] thomas at epiphantastic dot com
Forgot to say, I'm running PHP 5.1.2
------------------------------------------------------------------------
[2006-08-16 20:48:52] thomas at epiphantastic dot com
I'm experiencing this same problem, running PHP on Windows with both
Apache and IIS. Here's the code:
<?php
class TestClass {
private $var1 = "private";
protected $var2 = "protected";
public $var3 = "public";
}
$o = new TestClass();
foreach(array_keys(get_object_vars($o)) as $key)
echo $key;
?>
I'd expect to see 3 values outputted but only one comes back.
------------------------------------------------------------------------
[2006-03-23 01:00:05] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/36693
--
Edit this bug report at http://bugs.php.net/?id=36693&edit=1