В руководстве по синтаксису генератора говорится следующее:
Любая функция, содержащая yield
, является функцией генератора.
Итак, наличие ключевого слова yield
приводит к наличию функции генератора. С ключевым словом return
вы выходите из функции, которая используется для создания функции генератора. В этом случае он просто пустой, потому что до оператора return
нет строк yield
. При использовании следующего исходного кода:
function returnAndYield(): Generator
{
yield 1;
yield 2;
return;
yield 3;
yield 4;
}
$result = returnAndYield();
echo implode(',', iterator_to_array($result));
вы получите следующий вывод:
1,2
Значения 3
и 4
не находятся в генераторе, поскольку функция выход до этих yield
операторов.