i = 0; } public function valid() { echo "Is valid?\n"; echo $this->i < 10 ? "\tYes\n" : "\tNo\n"; return $this->i < 10; } public function current() { echo "Get current!\n"; } public function key() { echo "Get key!\n"; } public function next() { echo "Next!\n\n"; $this->i++; } public function hasChildren(){ echo "Has children?\n"; echo $this->i > 5 ? "\tYes\n" : "\tNo\n"; return $this->i > 5; } public function getChildren(){ echo "Get children!\n"; return new RecursiveArrayIterator; } } $r = new RecursiveIteratorIterator( new R ); foreach($r as $i){ } /* Rewind! Is valid? Yes Has children? No Is valid? Yes Get current! Next! Is valid? Yes Has children? No Is valid? Yes Get current! Next! Is valid? Yes Has children? No Is valid? Yes Get current! Next! Is valid? Yes Has children? No Is valid? Yes Get current! Next! Is valid? Yes Has children? No Is valid? Yes Get current! Next! Is valid? Yes Has children? No Is valid? Yes Get current! Next! Is valid? Yes Has children? Yes Get children! Next! Is valid? Yes Has children? Yes Get children! Next! Is valid? Yes Has children? Yes Get children! Next! Is valid? Yes Has children? Yes Get children! Next! Is valid? No Is valid? No */ ?>