Sobes.tech
Middle+

Hogyan valósul meg a generátorban, hogy a jelenlegi fájl csak egy objektumot tartalmaz?

sobes.tech MI

Válasz az MI-től

A PHP-ben a Generator (Generator) egy iterátorként van megvalósítva, amely lehetővé teszi egy függvény végrehajtásának szüneteltetését és későbbi folytatását. Amikor foreach ciklusban használják, egyetlen Generator objektummal működik minden pillanatban. Minden yield hívásakor a függvény "emlékszik" az állapotára (helyi változók, végrehajtási pozíció) és értéket ad vissza, ezáltal az iteráció egy elemét generálva. A következő foreach iteráció során a függvény ott folytatódik, ahol abbamaradt. Valójában a Generator objektum egy állapotos objektum, amely az iteráció állapotát irányítja.

<?php

function myGenerator() {
    yield 1; // A függvény szünetel, és 1-et ad vissza
    echo "Folytatás 1 után\n";
    yield 2; // A függvény szünetel, és 2-t ad vissza
    echo "Folytatás 2 után\n";
    yield 3; // A függvény szünetel, és 3-at ad vissza
}

$generator = myGenerator(); // Egy Generator objektum létrehozása

foreach ($generator as $value) {
    echo "Kapott érték: " . $value . "\n";
}

// Bármikor, a $generator változó egy Generator típusú objektumot tartalmaz.
// Ez irányítja az értékek közötti iteráció folyamatát.

?>

Ezért egyetlen Generator objektum beágyazza az állapotot és a lépésenkénti adatlekérdezés logikáját, lehetővé téve nagy adathalmazok kezelését anélkül, hogy azokat teljes egészében betöltenénk a memóriába.