---
title: "lazy() - колекції без перевантаження пам'яті"
url: https://laravelukraine.com/blog/lazy-kolekciyi-bez-perevantazennia-pamiati
author: "Олексій Бабінцев"
date: 2026-09-02
---

# lazy() - колекції без перевантаження пам'яті

Якщо обробляється 50 000 елементів і застосовується 10 методів, звичайна колекція створить 10 копій у пам'яті.

Lazy колекції обробляють один елемент за раз.

**Як працює:**

Елемент проходить через усі методи і лише потім переходить до наступного.

**Коли варто використовувати:**

* Великі файли
* Стрімінг
* Генератори
* Обмежена пам'ять

Порада: перетворити назад у звичайну колекцію - all().

```php
// Погано: багато копій у пам'яті
$result = collect($hugeArray)
  ->filter(...)
  ->map(...)
  ->sortBy(...)
  ->take(100);

// Добре: один елемент за раз
$result = collect($hugeArray)
  ->lazy()
  ->filter(...)
  ->map(...)
  ->sortBy(...)
  ->take(100)
  ->all();

// Великий CSV
$users = LazyCollection::make(function () {
  $h = fopen('users.csv', 'r');
  while ($line = fgets($h)) {
    yield $line;
  }
  fclose($h);
})->map(fn($l) => str_getcsv($l));

// cursor() - вже lazy
User::cursor();
```
