Для чего нужны Генераторы (yield) в php?

Добрый день! Подскажи пожалуйста как работают генераторы yield в php и для чего, если можно - приведите парочку примеров пожалуйста)
  • Вопрос задан
  • 21162 просмотра
Решения вопроса 1
@Nc_Soft
парсим большие csv
<?php
function getRows($file) {
    $handle = fopen($file, 'rb');
    if ($handle === false) {
        throw new Exception();
    }
    while (feof($handle) === false) {
        yield fgetcsv($handle);
    }
    fclose($handle);
}

foreach (getRows('data.csv') as $row) {
     print_r($row);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
php.net/manual/ru/language.generators.syntax.php
yield - возврат из функции с сохранением текущего итерационного состояния этой функции.
При запросе следующего значения в цикле итерационном цикле - снова вызов этой функции с использованием сохранённого состояния, т.е. продолжение обработки данных с места возврата внутри этой функции.

Можно провести некую аналогию с "курсором" и местом обработки данных в позиции курсора.
Ответ написан
@entermix
Ответ написан
Комментировать
Благодаря использованию генератора сохраняется состояние функции. Следующая итерация начинается с места окончания с теми же переменными с которыми завершилась предыдущая.
По ссылке пример кода и сразу же результат выполнения(а так же информация что будет если использовать return в генераторе) blog.ivru.net/?id=145
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы