<?php
/*
* Print Fibocanni sequence using a generator
*/
/**
* @param int $i number of Fibonacci numbers to generate
* @param Generator $set Fibonacci calculator
*/
function loop($i, Generator $set)
{
while ($i-- > 0 && $set->valid()) {
yield $set->current();
$set->next();
}
}
/*
* Fibonacci generator
*/
function fib()
{
yield $i = 0;
yield $j = 1;
while (true) {
yield $k = $i + $j;
$i = $j;
$j = $k;
}
}
/*
* Generate 100 Fibonacci numbers
*/
foreach (loop(100, fib()) as $item) {
print($item . ',');
}