Middle
Kaip veikia generatorius PHP?
sobes.tech AI
Atsakymas iš AI
Generatorius yra funkcija, kuri grąžina iteratorių. Jis leidžia pereiti per duomenų rinkinį neiškraunant viso masyvo į atmintį, naudojant raktinę žodį yield. Kiekvieną kartą iškvietus yield, funkcijos vykdymas sustabdomas, grąžinama reikšmė ir išsaugoma funkcijos būsena. Sekančiu next() iškvietimu, iteratoriaus vykdymas tęsiasi nuo vietos, kur jis buvo sustabdytas.
<?php
function numberGenerator($limit) {
for ($i = 1; $i <= $limit; $i++) {
yield $i; // Sustabdo vykdymą ir grąžina reikšmę
}
}
$numbers = numberGenerator(5);
foreach ($numbers as $number) {
echo $number . " "; // Išveda: 1 2 3 4 5
}
?>
Privalumai:
- Atminties taupymas: Leidžia apdoroti didelius duomenų kiekius, neįkeliant jų visų į atmintį.
- Lėtai įkeliama: Reikšmės generuojamos pagal poreikį, kai jų reikia.
- Veikimo pagerinimas tam tikroms užduotims, pvz., didelių failų skaitymui.
Naudojama didelių kolekcijų iteracijai, failų eilutė po eilutės skaitymui, begaliniams sekų įgyvendinimui.