(PHP 5 >= 5.5.0, PHP 7, PHP 8)
Generator::send — Передаёт значение в генератор
Метод передаёт значение в генератор как результат текущего выражения yield
и возобновляет выполнение генератора.
Если при вызове этого метода генератор ещё не дошёл до первого вызова оператора yield
,
генератору сначала будет разрешено перейти к первому вызову yield
перед отправкой значения.
Поэтому нет необходимости «возобновлять» работу PHP-генераторов вызовом Generator::next()
перед вызовом этого метода (как это делается в языке Python).
value
Значение, которое отправляется в генератор. Это значение будет текущим
возвращаемым значением выражения yield
генератора.
Метод возвращает значение, которое отдал генератор.
Пример #1 Пример внедрения значений через метод Generator::send()
<?php
function printer()
{
echo "I'm printer!" . PHP_EOL;
while (true) {
$string = yield;
echo $string . PHP_EOL;
}
}
$printer = printer();
$printer->send('Hello world!');
$printer->send('Bye world!');
?>
Результат выполнения приведённого примера:
I'm printer! Hello world! Bye world!