|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2008-07-06 01:26 UTC] jani@php.net
[2009-02-13 23:01 UTC] felipe@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 17:00:01 2025 UTC |
Description: ------------ If each is used on an object it will reveal the protected and private member data. It is not possible to change this data, but it should not be visible at all. Besides the each function should not be allowed on objects, or, if implementing ArrayAccess, it should not reveal the private and protected properties. Reproduce code: --------------- class A { private $x = 'private'; protected $y = 'protected'; public $z = 'public'; } $o = new A(); $o -> a = 'outer:public'; while(list($k, $v) = each($o)) { $pos = 0; if($k{0} == "\0") $k = substr($k, $pos = strpos($k, "\0", 1) + 1); switch($pos) { case 6: $k = 'Private::' . $k; break; case 3: $k = 'Protected::' . $k; break; default: $k = 'Public::' . $k; break; } echo '<pre>'; print_r(array($k, $v)); echo '</pre>'; } Expected result: ---------------- Array ( [0] => Public::z [1] => public ) Array ( [0] => Public::a [1] => outer:public ) Actual result: -------------- Array ( [0] => Protected::x [1] => private ) Array ( [0] => Protected::y [1] => protected ) Array ( [0] => Public::z [1] => public ) Array ( [0] => Public::a [1] => public von aussen )