Описание тега 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
Чтение ресурсов