(PHP 5 >= 5.5.0, PHP 7, PHP 8)
Les objets Generator sont retournés depuis des générateurs.
Les objets Generator ne peuvent pas être instanciés via le mot clé new.
Voir aussi l'itération d'objet.
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