The Generator class
(PHP 5 >= 5.5.0)
Введение
Generator objects are returned from generators.
Предостережение
Generator objects cannot be instantiated via new.
Обзор классов
Содержание
- Generator::current — Get the yielded value
- Generator::key — Get the yielded key
- Generator::next — Resume execution of the generator
- Generator::rewind — Rewind the iterator
- Generator::send — Send a value to the generator
- Generator::throw — Throw an exception into the generator
- Generator::valid — Check if the iterator has been closed
- Generator::__wakeup — Serialize callback
Коментарии
Unlike return, yield can be used anywhere within a function so logic can flow more naturally. Take for example the following Fibonacci generator:
<?php
function fib($n)
{
$cur = 1;
$prev = 0;
for ($i = 0; $i < $n; $i++) {
yield $cur;
$temp = $cur;
$cur = $prev + $cur;
$prev = $temp;
}
}
$fibs = fib(9);
foreach ($fibs as $fib) {
echo " " . $fib;
}
// prints: 1 1 2 3 5 8 13 21 34