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.