Описание тега php-generators

В PHP 5.5 представлены генераторы и связанные с ними ключевые слова yield. Генератор позволяет выполнять итерацию только вперед без создания массива в памяти и с меньшими затратами времени. Когда объявляется функция с ключевым словом yield, она возвращает класс Generator вместо запуска метода.

Использовать php-generator отметить когда

Вопрос имеет специфическое для генератора поведение или включает интенсивное использование генераторов.

Что такое генератор?

Генератор - это простой способ реализации итераторов. Преимущество заключается в отсутствии шаблонов по сравнению с реализацией итератора. Кроме того, природа генератора позволяет избежать чтения больших массивов в память перед итерацией или создания бесконечных последовательностей.

Как сделать генератор?

Генератор не может быть запущен с помощьюnew ключевое слово и ты не можешь extendкласс. Для запуска генератора функция с ключевым словомyield должен быть создан, а затем объявлен в переменной.

Генератор четных чисел

function evenNumberGenerator($length) {
  for($i = 2; $i <= $length; $i += 2) {
    yield $i;
  }
}

$Generator = evenNumberGenerator(10);

foreach($Generator as $even) {
  echo $even; // outputs: 2,4,6,8,10
}

// Manual call to next interation
$Generator->next(); 

echo $Generator->current(); // outputs null

Чтение ресурсов