М
👉 Представим себе достаточно стандартную ситуацию, в которой вам нужно получить из внешнего API кучу однотипных сущностей. Например вам нужно получить из сервиса рассылок всех ваших подписчиков (это не реклама, а пример приближенный к реальности ;)).
Какое решение чаще всего приходит на ум? Что-то вроде этого.
❓ И вроде всё выглядит неплохо, но какие у этого кода минусы?
❌ Тут мы пытаемся получить все данные и сохранить их в один массив. К сожалению не можем угадать, сколько там в реальности может быть данных (например разница тестового и прода) и не знаем с какой скоростью их количество может увеличиваться. В свою очередь мы рискуем получить переполнение памяти, которое мы никак не контролируем. Да и код выглядит как-то не идеально.
👌 Но выход есть! Используем генераторы.
Генератор позволяет вам писать код, использующий foreach для перебора набора данных без необходимости создания массива в памяти, что может привести к превышению лимита памяти, либо потребует довольно много времени для его создания. И наш конечный код будет выглядеть примерно следующим образом.
Конструкция
yield from
позволяет вам развернуть полученный массив данных и вернуть каждый его элемент. Ставь 🍺 если было полезно или 🐒 если не используешь генераторы в коде.
#PHP #advice