معالجة البيانات عند الحاجة بإستخدام LazyCollection
ال LazyCollection بتقدر تنتج العناصر بالتدريج بدل تجهيز كل العناصر في الذاكرة
إنتاج قيم من Generator
ال take بتطلب الجزء المطلوب من المصدر
<?php
use Illuminate\Support\LazyCollection;
$items = LazyCollection::make(function () {
for ($number = 1; $number <= 100; $number++) {
yield $number;
}
});
echo $items->take(3)->values()->toJson();النتيجة
[1,2,3]إضافة تحويل قبل أخذ النتيجة
ال map هنا بتتحسب وقت إستهلاك العناصر
<?php
use Illuminate\Support\LazyCollection;
$items = LazyCollection::make(function () {
yield 2;
yield 4;
yield 6;
});
echo $items->map(fn ($number) => $number * 10)->take(2)->values()->toJson();النتيجة
[20,40]ملحوظة
تحويل مصفوفة ضخمة موجودة بالفعل إلى LazyCollection مش بيلغي الذاكرة اللي إستهلكتها المصفوفة