для себя не могу применения найти.
"Генератор позволяет вам писать код, использующий foreach для перебора набора данных без необходимости создания массива в памяти, что может привести к превышению лимита памяти, либо потребует довольно много времени для его создания."
В основном - сократить объем памяти
Спасибо, а у тебя не будет примера,когда он в этом помогает. Например, с итератором - все понятно, он помогает сократить объем памяти. Но генератор тогда зачем
Генератор использует итераторы внутри себя
Для того же просто проще описывается
Хорошо пример показан.
Например, чтение большого текстового файла построчно или блоками строк
он просто описывает одну итерацию и запоминает свое состояние между вызовами итератора function gen() { for { // достали кусок данных ... // как-то обработали этот кусок данных ... // передали кусок данных тому кто вызвал итератор yield $кусок-данных } } // где-то в коде foreach(gen() as $обработанный-кусок-данных) Очевидно что полезно это может быть только с источниками данных курсорного типа, и используется просто для передачи отдельных элементов этих курсоров наружу
Обсуждают сегодня