Генераторы (yield)

Генератор (англ. generator) — обычная функция, которая возвращает массив через ключевое слово yield.

Ключевое слово yield похоже на return, она также возвращает значение, только после этого она не прекращает выполнять функцию, а переходит к следующему шагу yield.

Генератор в основном используют в цикле foreach(), когда надо вывести данные без создания массива.

// Создание генератора xrange
function xrange($start, $limit) {
    for ($i = $start; $i <= $limit; $i++) {
        yield $i;
    }
}

// Использование генератора в цикле
foreach (xrange(1, 5) as $number) {
    echo $number;
}

// 1, 2, 3, 4, 5

Преимущество генераторов в том, что она не занимает места в памяти, т.к. массив не создаётся. Это особенно полезно, когда надо обработать большой объём данных.

Любая функция, содержащая yield, является генератором.

Генераторы появились в версии PHP 5.5.0.