ID: 38478 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Open +Status: Assigned Bug Type: SPL related Operating System: Gentoo PHP Version: 5.2.0RC1 -Assigned To: +Assigned To: helly
Previous Comments: ------------------------------------------------------------------------ [2006-08-17 08:20:07] [EMAIL PROTECTED] Description: ------------ The Iterator interface (SPL) defines a method rewind(). When implementing e.g. ArrayIterator to allow array access to an object, one would expect that reset($object) would use the rewind method. This does not happen, but the first property is returned. Reproduce code: --------------- <?php class testArray implements Iterator { protected $prop = array( 1 => 'one', 2 => 'two', 3 => 'three', ); public function rewind() { return reset( $this->prop ); } public function key() { return key( $this->prop ); } public function current() { return current( $this->prop ); } public function next() { return next( $this->prop ); } public function valid() { return ( current( $this->prop ) !== false ); } } $array = new testArray(); Expected result: ---------------- // Expected: string(3) "one" var_dump( $array->rewind() ); // Expected: string(3) "one" var_dump( reset( $array ) ); Actual result: -------------- // As expected: string(3) "one" var_dump( $array->rewind() ); // Expected: string(3) "one" var_dump( reset( $array ) ); /* Got: array(3) { [1]=> string(3) "one" [2]=> string(3) "two" [3]=> string(5) "three" } */ ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38478&edit=1