Может ли быть помимо yield return в генераторе

«Может ли быть помимо yield return в генераторе» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, в генераторе можно использовать yield break для принудительного завершения генератора. Также можно использовать return с PHP 7.0+, но он должен быть без значения (просто завершает генератор). С PHP 7.4+ можно возвращать значение через return, но это будет доступно только через getReturn().

Пример:

function generator() {
    yield 1;
    yield 2;
    if (someCondition()) {
        yield break; // завершает генератор
    }
    yield 3;
    return "Done"; // PHP 7.4+
}

$gen = generator();
foreach ($gen as $value) {
    echo $value;
}
echo $gen->getReturn(); // "Done"