<?php 
class Fibonnaci implements Iterator
{
    private 
$last;     
    private 
$beforeLast;    
    private 
$index 0;

    public function 
rewind()
    {
        
$this->beforeLast 0;
        
$this->last 1;
        
$this->index 0;
    }

    public function 
current()
    {
        return 
$this->beforeLast $this->last;
    }

    public function 
key()    
    {        
        return 
$this->index;    
    }

    public function 
valid()    
    {        
        return 
$this->current() < 100;    
    }

    public function 
next() 
    { 
        
$last $this->last;
        
$this->last $this->current();
        
$this->beforeLast $last;
    }

}

$fib = new Fibonnaci();
foreach(
$fib as $nextNumber)
    echo 
$nextNumber'  ';

// foreach equals to the next WHILE loop

$fib->rewind();
while(
$fib->valid())
{
    
$key $fib->key();
    
$val $fib->current();

    
/// echo 
    
$fib->next();
}
1