I generators permettono di iterare su grandi dataset senza caricare tutto in memoria.
Base
function countTo($max) {
for ($i = 1; $i <= $max; $i++) {
yield $i;
}
}
foreach (countTo(1000000) as $num) {
echo $num;
// Usa poca memoria!
}yield con chiavi
function getUsers() {
yield 1 => "Mario";
yield 2 => "Luigi";
yield 3 => "Peach";
}Leggere file grandi
function readLines($file) {
$handle = fopen($file, "r");
while (($line = fgets($handle)) !== false) {
yield trim($line);
}
fclose($handle);
}
foreach (readLines("huge_file.txt") as $line) {
process($line);
}