GENERATORY I SŁOWO KLUCZOWE YIELD

Generatory służą do iteracji, jednak w przeciwieństwie do standardowej klasy Iterator, alokowanie pamięci odnosi się tylko do oddawanej wartości co pozwala na znaczne zredukowanie zużywanych zasobów.

18-07-2017

Aby stworzyć generator wystarczy utworzyć prostą funkcję z wykorzystaniem słowa kluczowego yield. Warto zaznaczyć że yield działający na podobnej zasadzie co return, oddaje wartość a nie zwraca, co pozwala na zaoszczędzenie cennej pamięci. Oto prosty przykład:


    function iteration() {
        for ($i = 0; $i < 10; $i++) {
            yield $i;
        }
    }
	

Generator można wykorzystać w pętli foreach:


    foreach (iteration() as $i) {
        echo $i;
    }
	

Pomimo wielu zalet iteracja za pomocą generatora może okazać się niewystarczająca. W takim przypadku niezbędnym będzie stworzenie rozszerzonej klasy iterator. Z drugiej strony generatory mogą okazać się bardzo wydajnym rozwiązaniem zwłaszcza gdy będziemy operować na bardzo dużych plikach i wczytywanie ich do pamięci przekroczy możliwości naszego serwera.


  wstecz