| 
<?php
/*
 * Fibonacci iterator class simply generates Fibonacci numbers.
 */
 
 /**
 * Fibonacci iterator.
 *
 * @author Artur Barseghyan
 */
 class Fibonacci implements Iterator {
 private $_a;
 private $_b;
 private $_key;
 
 public function __construct() {
 $this->rewind();
 }
 
 public function current() {
 return $this->_b;
 }
 
 public function next () {
 $b = $this->_b;
 $this->_b = $this->_a + $this->_b;
 $this->_a = $b;
 ++$this->_key;
 }
 
 public function key () {
 return $this->_key;
 }
 
 public function valid () {
 return true;
 }
 
 public function rewind () {
 $this->_a = 0;
 $this->_b = 1;
 $this->_key = 0;
 }
 }
 
 |