Generator::send

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

Generator::send向生成器中傳入一個(gè)值

說明

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

向生成器中傳入一個(gè)值,并且當(dāng)做 yield 表達(dá)式的結(jié)果,然后繼續(xù)執(zhí)行生成器。

如果當(dāng)這個(gè)方法被調(diào)用時(shí),生成器不在 yield 表達(dá)式,那么在傳入值之前,它會(huì)先運(yùn)行到第一個(gè) yield 表達(dá)式。 因此沒有必要調(diào)用 Generator::next() 讓 PHP 生成器 “準(zhǔn)備”(就像是 Python 那樣做)。

參數(shù)

value

傳入生成器的值。這個(gè)值將會(huì)被作為生成器當(dāng)前所在的 yield 的返回值

返回值

返回生成的值。

范例

示例 #1 用 Generator::send() 向生成器函數(shù)中傳值

<?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!');
?>

以上例程會(huì)輸出:

I'm printer!
Hello world!
Bye world!