(PHP 5 >= 5.5.0, PHP 7)
Generator::send — Передать значение в генератор
Передача заданного значения в генератор как результат текущего выражения yield и возобновление его работы.
Если генератор еще не дошел до первого вызова оператора yield, он выполнится до момента первого вызова yield, прежде чем передаст в него значение. Так что нет необходимости вызывать генератор с помощью 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!