Hoe wordt in de generator gerealiseerd dat er slechts één object in het huidige bestand staat?
sobes.tech AI
Antwoord van AI
De generator (Generator) in PHP wordt geïmplementeerd als een iterator die het mogelijk maakt om de uitvoering van een functie te pauzeren en later weer op te pakken. Wanneer deze in een foreach-lus wordt gebruikt, werkt hij met één Generator-object op elk moment. Elke keer dat yield wordt aangeroepen, "herinnert" de functie haar toestand (lokale variabelen, uitvoeringspositie) en geeft een waarde terug, waardoor een element van de iteratie wordt gegenereerd. Bij de volgende iteratie van de foreach-lus gaat de functie verder vanaf waar deze was gestopt. In feite vertegenwoordigt het Generator-object een toestand-gevoelig object dat de toestand van de iteratie beheert.
<?php
function myGenerator() {
yield 1; // De functie wordt gepauzeerd en geeft 1 terug
echo "Vervolg na 1\n";
yield 2; // De functie wordt gepauzeerd en geeft 2 terug
echo "Vervolg na 2\n";
yield 3; // De functie wordt gepauzeerd en geeft 3 terug
}
$generator = myGenerator(); // Er wordt een Generator-object gemaakt
foreach ($generator as $value) {
echo "Ontvangen waarde: " . $value . "\n";
}
// Op elk moment bevat de variabele $generator een object van het type Generator.
// Het beheert het iteratieproces over de gegenereerde waarden.
?>
Kortom, één enkel Generator-object encapsuleert de toestand en de logica voor het stapsgewijs verkrijgen van gegevens, waardoor het mogelijk is om potentieel grote datasets te verwerken zonder ze volledig in het geheugen te laden.