Edit report at https://bugs.php.net/bug.php?id=49369&edit=1
ID: 49369 Comment by: bugs dot php dot net dot nsp at cvogt dot org Reported by: admin at ifyouwantblood dot de Summary: Change current(), key(), next(), etc. to check for Iterator Status: Open Type: Feature/Change Request Package: Arrays related Operating System: * PHP Version: * Block user comment: N Private report: N New Comment: As a further note, the current behavior or current() also leaks private fields unlike e.g. http://php.net/manual/en/language.oop5.iterations.php. class Test{ private $field = 5; public $field3 = 6; } $t = new Test; print current($t); Expected result: 6 Actual result: 5 Previous Comments: ------------------------------------------------------------------------ [2009-08-26 10:34:05] admin at ifyouwantblood dot de Description: ------------ it would be helpful for chained Iterators, if the default array functions would check if an given object is an instanceof Iterator and react appropriate. thus key() calling object->key(), current() calling object->current() and so on. Reproduce code: --------------- <?php class iterator_array implements Iterator { protected $aarray; public function __construct($array) { $this->aarray=$array; } public function key() { return key($this->aarray); } public function current() { return current($this->aarray); } public function valid() { return (current($this->aarray)!==FALSE); } public function next() { next($this->aarray); } public function rewind() { reset($this->aarray); } } $i=new iterator_array(Array(1,2)); var_dump(current($i)); var_dump(key($i)); next($i); var_dump($current($i)); var_dump(key($i)); Expected result: ---------------- int(1) int(0) int(2) int(1) Actual result: -------------- array(6) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) } string(9) "�*�aarray" bool(false) NULL ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=49369&edit=1