ID:               46416
 Updated by:       [EMAIL PROTECTED]
 Reported By:      bugzilla at zuavra dot net
-Status:           Open
+Status:           Bogus
 Bug Type:         Scripting Engine problem
 Operating System: *
 PHP Version:      5.3.0alpha2
 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php




Previous Comments:
------------------------------------------------------------------------

[2008-10-29 10:06:26] bugzilla at zuavra dot net

Description:
------------
Using each() to iterate through an object will produce weird results in
two respects:
1. It will expose private and protected members alongside public ones.
2. For private and protected members, the keys (names) are jumbled.

Yes, I know that this behaviour is known and that the manual page for
each() warns about this. But such an inconsistency should not exist.

Desirable consistent behaviour:
a) Produce the same results as foreach() (show only public members).
or
b) Refuse to work with objects altogether and state so in the manual.

Reproduce code:
---------------
<?php
class Example {
    private $priv = 1;
    protected $prot = 2;
    public $pub = 3;
}
$obj = new Example();
while (list($key, $val) = each($obj)) {
    printf("%s = %s\n", $key, $val);
}
?>

Expected result:
----------------
pub = 3

Actual result:
--------------
[NUL]Example[NUL]priv = 1
[NUL]*[NUL]prot = 2
pub = 3

where [NUL] is the null (0x00) character


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=46416&edit=1

Reply via email to