PHP Le rendement


Exemple

Une déclaration de yield est similaire à une instruction return, sauf qu'au lieu d'arrêter l'exécution de la fonction et de renvoyer, yield renvoie à la place un objet Generator et interrompt l'exécution de la fonction generator.

Voici un exemple de la fonction range, écrite en générateur:

function gen_one_to_three() {
    for ($i = 1; $i <= 3; $i++) {
        // Note that $i is preserved between yields.
        yield $i;
    }
}

Vous pouvez voir que cette fonction renvoie un objet Generator en inspectant la sortie de var_dump :

var_dump(gen_one_to_three())

# Outputs:
class Generator (0) {
}

Valeurs de rendement

L'objet Generator peut ensuite être itéré comme un tableau.

foreach (gen_one_to_three() as $value) {
    echo "$value\n";
}

L'exemple ci-dessus affichera:

1
2
3

Valeurs de rendement avec les clés

Outre les valeurs de rendement, vous pouvez également générer des paires clé / valeur.

function gen_one_to_three() {
    $keys = ["first", "second", "third"];

    for ($i = 1; $i <= 3; $i++) {
        // Note that $i is preserved between yields.
        yield $keys[$i - 1] => $i;
    }
}

foreach (gen_one_to_three() as $key => $value) {
    echo "$key: $value\n";
}

L'exemple ci-dessus affichera:

first: 1
second: 2
third: 3