Php/docs/generator.send

提供:Dev Guides
< Php
移動先:案内検索

Generator::send

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

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


説明

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

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

ジェネレータが yield 式を指していないときにこのメソッドが呼ばれると、 まずは最初の yield 式まで進めてから値を送信します。そのため、 最初のジェネレータを指すためにわざわざ Generator::next() を呼ぶ必要はありません (Python と同じです)。


パラメータ

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


返り値

yield した値を返します。


例1 Generator::send() による値の注入

<?phpfunction 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!