Generator::send

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

Generator::send向生成器中传入一个值

说明

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

向生成器中传入一个值,并且当做 yield 表达式的结果,然后继续执行生成器。

如果当这个方法被调用时,生成器不在 yield 表达式,那么在传入值之前,它会先运行到第一个 yield 表达式。 因此没有必要调用 Generator::next() 让 PHP 生成器 “准备”(就像是 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!