function csvReader(string $file): Generator {
$fh = fopen($file, 'r');
while (!feof($fh)) {
yield fgetcsv($fh);
}
fclose($fh);
}
foreach (csvReader('million_rows.csv') as $row) {
process($row); // лише один рядок у памʼяті
}Масив з мільйонів рядків займе сотні MB. Генератор — O(1) пам'яті незалежно від обсягу. Виконання ліниве: наступне значення обчислюється тільки при запиті.
yield from делегує виконання іншому генератору або ітерованому об'єкту — корисно для композиції генераторів.