Генераторы (generators) в PHP | Глазами фрилансера

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

Содержание ролика "Генераторы (generators) в PHP":
00:00 В чём проблема генераторов и как к ним подступиться?
01:00 Пишем первый генератор: просто добавь слово yield!
04:30 Класс Generator в PHP.
04:50 Генераторы - это всегда итераторы! Методы current(), next(), rewind().
08:35 Значение слова и принцип работы yield.
11:05 Генераторы на начало не перематываются.
13:05 return в генераторах.
18:10 Когда генератор начинает работать?
20:30 Основное преимущество работы генераторов - свободная память.
27:00 Генератор помнит своё текущее состояние, но предыдущее состояние мгновенно забывает.
29:30 Где используются генераторы? GuzzleHttp.
33:15 Подводим итог: что такое генератор в PHP?

Ссылки по теме:

Крайне полезное коммьюнити для PHP и Laravel-разработчиков:

Здесь вы можете получать анонсы новых видео:
Рекомендации по теме
Комментарии
Автор

Если файл будет к примеру 1ГБ, не будет ли каждая итерация генератора обращаться к диску, тем замедляя работу?

stanislaukaraliou
Автор

Супер. Спасибо.
Вывод: Генератор - это итератор, который позволяет проходить коллекцию не держа ее в памяти. Можно использовать для парсинга больших файлов, Http запросов, и других трудоемких операций, где нужно засунуть огромный объект в оперативку и затем пройтись по нему.

eugenelviv
Автор

Последний пример я всегда решал через очереди. Ну теперь ещё один инструмент добавился. Спасибо за такое доходчивое разъяснение!

dmitryalinsky
Автор

Спасибо, очень доходчиво и без лишней воды

Thepaksik
Автор

Огромное спасибо за ваш труд! Стало понятнее по работу генератора) Пожалуйста продолжайте делать такие видео)

cksxtrg
Автор

Супер-видео, много чего полезного для себя извлек!Спасибо

ihorrud
Автор

Большое спасибо что прислушались и раскрыли тему ! Все четко с толком и расстановкой. В коментах просят про реальный пример с бигдата, согласен это раскроет тему полностью. Будем ждать продолжение :)

krokhs
Автор

Спасибо огромное, я понял генераторы! Очень не хватает иногда информации, которая объясняет суть вещей. Огромный респект за такую вдумчивую подачу знания

vqiduje
Автор

Эх, если бы я 10 лет назад начал бы учиться по вашим видео, был бы уже миллионером))

kindy
Автор

Спасибо, что разжевали!:) Пойду оптимизировать проекты:))

arta
Автор

Хорошее видео, спасибо!!! но было бы прям СУПЕР, если был бы пример из жизни: "А сейчас мы с вами напишем небольшой парсер csv/excel файлов с помощью генератора"

topalek
Автор

6ляяя, мужик спасибо. Я задолбался искать, нахрена нужны эти генераторы, когда я тоже самое могу с массивом сделать. Спасибо.

saharaprotocol
Автор

Как жаль, что не знал о генераторах пару дней назад) Делал тестовое задание, где нужно было сделать отчет о нагрузке посекундно в течение суток. Решение с циклами работает, но занимает много памяти. А если понадобится сделать отчет за несколько дней, памяти не хватит.

TheDinamitt
Автор

Было познавательно и полезно
Мне понравился пример на guzzle, вот только было не ясно зачем отправлять 100 одинаковых запросов без изменения отправляемых параметров, возможно я чего то не понимаю.

dunswwo