PHP 7 中的生成器返回表达式
phpserver side programmingprogramming
在以前的 PHP 版本中,生成器函数无法返回表达式,但从 PHP 5.5 开始,在现有的生成器函数中添加了生成器返回表达式。通过使用生成器返回表达式,可以轻松地在生成器中使用 return 语句,并且它还会返回最终表达式的值。
- 通过使用生成器返回表达式,我们只能返回表达式的值,而不能返回引用。通过使用新的 Generator::getReturn() 方法,我们可以获取生成器函数完成生成定义值后可以使用的值。
- 使用 PHP 7 生成器,我们可以从生成器返回表达式中返回最终值。我们可以使用 $generator>getReturn() 检索返回表达式,因为 PHP 7 允许生成器从程序中的协同例程计数中返回最终值,该值可以由执行生成器的客户端代码保存。
生成器返回表达式:示例 1
<html> <head> <title> PHP 7 Feature : Generator Return Expressions </title> </head> <body> <?php $generator = (function(){ yield "five"; yield "six"; yield "seven"; return "eight"; }) (); foreach ($generator as $val){ echo $val, PHP_EOL; } echo $generator ->getReturn(), PHP_EOL; ?> </body> </html>
输出
上述 PHP 程序的输出将是:
five six seven eight
上述 PHP 7 程序 − 的解释
- 我们可以在编辑器中编写上述代码,并可以按照上述示例编写所需的 HTML 代码,HTML 的主体部分注入生成器返回表达式的实际 PHP 7 代码。
- 其次,声明一个具有 $generator 引用的函数。
- 关于 $generator,我们定义了收益"five"、"six"、"seven"和"eight"。
- 最后,我们对"$generator"进行迭代函数直到结束(PHP_EOL)并回显收益值以及生成器返回表达式。
生成器返回表达式:示例 2
<html> <head> <title> PHP 7 Feature: Generator Return Expressions Example </title> </head> <body> <?php function gen(){ yield 'A'; yield 'B'; yield 'C'; return 'gen-return'; } $generator = gen(); var_dump($generator); foreach ($generator as $letter){ echo $letter; } var_dump($generator->getReturn()); ?> </body> </html>
输出
上述 PHP 程序的输出将是 −
object(Generator)#1 (0) { }ABCstring(10) "gen-return"