Sobes.tech
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.