Generator::send

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

Generator::sendEnvia um valor ao gerador

Descrição

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

Envia o valor informado ao gerador como resultado da expressão yield corrente e retorna a execução do gerador.

Se o gerador não estiver na expressão yield quando o método for chamado, primeiro será deixado avançar para a primeira expressão yield antes de enviar o valor. Assim como não é necessário "forçar" os geradores do PHP com uma chamada ao método Generator::next() (como é feito em Python).

Parâmetros

value

Valor a ser enviado ao gerador. Este valor será o retornado pela expressão yield em que o gerador estiver.

Valor Retornado

Retorna o valor gerado.

Exemplos

Example #1 Usando o método Generator::send() para injetar valores

<?php
function printer() {
    echo "Valor inicial.".PHP_EOL;
    while (true) {
        $string = yield;
        echo $string.PHP_EOL;
    }
}

$printer = printer();
$printer->send('Envio 1.');
$printer->send('Envio 2.');
?>

O exemplo acima produzirá:

Valor inicial.
Envio 1.
Envio 2.