Kako se u generatoru implementira to što u trenutnoj datoteci postoji samo jedan objekat?
sobes.tech АИ
Одговор од АИ
Generator (Generator) u PHP-u implementiran je kao iterator koji omogućava pauziranje izvršavanja funkcije i njegovo kasnije nastavljanje. Kada se koristi u foreach petlji, radi sa jednim Generator objektom u bilo kom trenutku. Svaki put kada se pozove yield, funkcija "se seća" svog stanja (lokalne promenljive, pozicija izvršavanja) i vraća vrednost, generišući element iteracije. Pri sledećoj iteraciji foreach petlje, funkcija nastavlja od mesta gde je stala. U suštini, Generator objekat predstavlja stanje-osećeni objekat koji kontroliše stanje iteracije.
<?php
function myGenerator() {
yield 1; // Funkcija se pauzira i vraća 1
echo "Nastavak posle 1\n";
yield 2; // Funkcija se pauzira i vraća 2
echo "Nastavak posle 2\n";
yield 3; // Funkcija se pauzira i vraća 3
}
$generator = myGenerator(); // Kreira se Generator objekat
foreach ($generator as $value) {
echo "Dobijena vrednost: " . $value . "\n";
}
// U svakom trenutku, promenljiva $generator sadrži objekat tipa Generator.
// Ona kontroliše proces iteracije preko generisanih vrednosti.
?>
Dakle, jedan Generator objekat inkapsulira stanje i logiku za postepeno dobijanje podataka, omogućavajući obradu potencijalno velikih skupova podataka bez njihovog potpunog učitavanja u memoriju.