Карточка Middle Функции, замыкания, генераторы обновлено
Генераторы: главное
Вопрос
Что нужно знать о генераторах PHP?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
- Функция с yield возвращает Generator (реализует Iterator). - Ленивое выполнение: код идёт до очередного yield. - yield $key = $value отдаёт пары, yield from делегирует. - send($v) передаёт значение внутрь (результат выражения yield). - return даёт итог, читается через getReturn(). - Перебрать генератор можно только…
Ответ
- Функция с
yieldвозвращаетGenerator(реализуетIterator). - Ленивое выполнение: код идёт до очередного
yield. yield $key => $valueотдаёт пары,yield fromделегирует.send($v)передаёт значение внутрь (результат выраженияyield).returnдаёт итог, читается черезgetReturn().- Перебрать генератор можно только один раз.
Разбор
Типичное применение: чтение больших файлов, выборка из базы курсором (Model::lazy() в Laravel), конвейеры обработки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.