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"

相关文章