Generatory

Z PHPEdia.pl
Wersja Tomxx (dyskusja | wkład) z dnia 20:16, 20 paź 2013

(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Skocz do: nawigacji, wyszukiwania

Definicja

Generatory umożliwiają używanie prostych iteratorów, które ułatwiają korzystanie z funkcji. Generatorów można używać tylko w funkcjach w PHP od wersji 5.5.

Przykłady

Aby użyć generatora, należy posłużyć się słowem kluczowym yield. Przykład najprostszej funkcji z użyciem generatorów, która utworzy tablicę z dzielnikami danej liczby.

<?php
 
function dzielniki($liczba) 
{
  for($n = 1; $n <= $liczba; $n++)
    {
    if($liczba % $n == 0) yield $n;
    }
}
 
$tablica = dzielniki(24); # 1, 2, 3, 4, 6, 8, 12, 24

?>

Funkcje używające generatorów mogą zwracać również tablice z kluczami, np.:

<?php
 
function klucze($tablica1, $tablica2)
{
  for($n = 0; $n < count($tablica1); $n++)
    {
    yield $tablica1[$n] => $tablica2[$n];
    }
}
 
$członkowie = ["brat", "dziadek", "ojciec"];
$imiona = ["Franek", "Janek", "Jakub"];
$tablica = klucze($członkowie, $imiona);
 
foreach ($tablica as $czlonekRodziny=>$imie)
{
echo "Mój $czlonekRodziny ma na imię $imie. <br>";
}
 
?>

Należy pamiętać o tym, że z tablicy utworzonej za pomocą funkcji wykorzystującej generatory nie można wyświetlić konkretnego elementu. Np. jeśli dodalibyśmy do powyższego przykładu linijkę:

echo $tablica["brat"];

otrzymalibyśmy błąd.

Wiki letter w.png To jest tylko zalążek artykułu. Jeśli możesz, rozbuduj go.