手册关于yield 的介绍 http://php.net/manual/zh/language.generators.syntax.php
手册关于 Generator 的介绍 http://php.net/manual/zh/generator.send.php
33
11
22
11
<?php function xrange () { while (1) { $a = (yield '11'); //yield 表达式 echo $a; } } $a = xrange();//返回一个生成器 echo $a->current();//返回当前产生的值 echo '<br>'; $a->send('33');//向生成器中传入一个值,并且当做 yield 表达式的结果,然后继续执行生成器。 echo '<br>'; echo $a->current(); echo '<br>'; $a->send('22'); echo '<br>'; echo $a->current();
输出结果:
1133
11
22
11
第一次 调用
$a->current();
调用 yield '11' 返回 '11' 并且在这里被 停住 此时 $a 是一个表达式
调用
$a->send('33');
因为 $a 是一个yield 表达式,所以 $a = '33'; 所以输出33 , 由于是一个永真循环。。所以这个过程会不断运行。
个人见解,希望大牛给予指导,继续思考php的yield。