(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 "Я — принтер!" . PHP_EOL;
while (true) {
$string = yield;
echo $string . PHP_EOL;
}
}
$printer = printer();
$printer->send('Привет, мир!');
$printer->send('Пока, мир!');
?>
Результат выполнения приведённого примера:
I'm printer! Hello world! Bye world!