Generator::send
PHP Manual
PHP Manual»Generator»Generator::send

Generator::send

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

Generator::send値をジェネレータに送る

説明

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

指定した値を yield の結果としてジェネレータに送り、ジェネレータを続行します。

ジェネレータが yield 式を指していないときにこのメソッドが呼ばれると、 まずは最初の yield 式まで進めてから値を送信します。そのため、 PHP のジェネレータでは、(Python で行われているような) Generator::next() の呼び出しで「呼び水を与える」必要はありません。

パラメータ

value

ジェネレータに送り込む値。この値が、ジェネレータが現在指している yield 式の戻り値になります。

戻り値

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!

To Top