Cum se realizează în generator faptul că în fișierul curent există doar un obiect?
sobes.tech AI
Răspuns de la AI
Generatorul (Generator) în PHP este implementat ca un iterator, care permite întreruperea execuției unei funcții și reluarea acesteia mai târziu. Când este utilizat într-un ciclu foreach, funcționează cu un singur obiect Generator în orice moment. De fiecare dată când se apelează yield, funcția "își amintește" starea (variabilele locale, poziția de execuție) și returnează o valoare, generând un element al iterației. La următoarea iterație a ciclului foreach, funcția continuă de unde s-a oprit. În fapt, obiectul Generator reprezintă un obiect cu stare, care controlează starea iterației.
<?php
function myGenerator() {
yield 1; // Funcția se oprește, returnând 1
echo "Continuare după 1\n";
yield 2; // Funcția se oprește, returnând 2
echo "Continuare după 2\n";
yield 3; // Funcția se oprește, returnând 3
}
$generator = myGenerator(); // Se creează un obiect Generator
foreach ($generator as $value) {
echo "Valoare obținută: " . $value . "\n";
}
// În orice moment, variabila $generator conține un obiect de tip Generator.
// Acesta controlează procesul de iterație asupra valorilor generate.
?>
Prin urmare, un singur obiect Generator încapsulează starea și logica pentru obținerea datelor pas cu pas, permițând gestionarea potențial de seturi mari de date fără a le încărca complet în memorie.