[2006年08月17日 08:20 UTC] toby@php.net
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" } */ PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2006年10月31日 23:32 UTC] helly@php.net
|