Generator::send

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Generator::sendEnvoie une valeur au générateur

Description

public Generator::send(mixed $value): mixed

Envoie la valeur fournie au générateur comme résultat de l'expression courante yield, et reprend l'exécution du générateur.

Si le générateur n'est pas à une expression yield lorsque cette méthode est appelée, il va d'abord avancer à la première expression yield avant d'envoyer la valeur. Ainsi, il n'est pas nécessaire de démarrer un générateur PHP avec un appel à la méthode Generator::next() (comme c'est le cas en Python).

Liste de paramètres

value

Valeur à envoyer au générateur. Cette valeur sera la valeur retournée de l'expression yield de la position courante du générateur.

Valeurs de retour

Retourne la valeur cédée.

Exemples

Exemple #1 Exemple d'utilisation de Generator::send() pour injecter des données

<?php
function printer() {
echo
"Je suis une imprimante !".PHP_EOL;
while (
true) {
$string = yield;
echo
$string.PHP_EOL;
}
}

$printer = printer();
$printer->send('Bonjour le monde !');
$printer->send('Au revoir le monde !');
?>

L'exemple ci-dessus va afficher :

Je suis une imprimante !
Bonjour le monde !
Au revoir le monde !