PHP Generator::getReturn() 方法
PHP Generator::getReturn()
方法用于获取一个生成器使用 return
语句返回的值。
( PHP 7 )
注意: 该方法是 PHP 7 新增的,在 PHP 5 中是无效的。
方法原型
PHP Generator::getReturn()
方法的原型如下
public mixed Generator::getReturn ( void )
调用该方法不用传递任何参数,且会返回生成器使用 return
语句返回的值。
如果生成器仍在执行中,那么调用 getReturn()
方法将会抛出一个异常
如果生成器没有使用 return 语句显式返回,那么调用 getReturn()
方法将会返回 NULL
返回值
在生成器完成执行后,返回生成器中使用 return
语句返回的值
范例一
我们写一个范例简单演示下 getReturn() 语句的使用
<?php $gen = (function() { yield 1; yield 2; return 3; })(); foreach ($gen as $val) { echo $val, PHP_EOL; } echo $gen->getReturn(), PHP_EOL;
运行结果如下
1 2 3
前面章节中我们有说过,如果生成器在执行过程中遇到了 return
语句,那么会立即终止生成器的执行。
<?php $gen = (function() { yield 1; yield 2; return 3; yield 4; return 5; })(); foreach ($gen as $val) { echo $val, PHP_EOL; } echo $gen->getReturn(), PHP_EOL;
运行结果如下
1 2 3
如果生成器仍在执行中,那么调用 getReturn()
方法将会抛出一个异常
<?php $gen = (function() { yield 1; yield 2; return 3; yield 4; return 5; })(); foreach ($gen as $val) { echo $val, PHP_EOL; echo $gen->getReturn(), PHP_EOL; } echo $gen->getReturn(), PHP_EOL;
运行结果如下
Fatal error: Uncaught Exception: Cannot get return value of a generator that hasn't returned in
如果生成器没有使用 return 语句显式返回,那么调用 getReturn()
方法将会返回 NULL
<?php $gen = (function() { yield 1; yield 2; })(); foreach ($gen as $val) { echo $val, PHP_EOL; } var_dump($gen->getReturn()); echo PHP_EOL;
输出结果如下
1 2 NULL