PHP 7 中的生成器返回表达式
在之前的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的body部分注入实际的PHP 7生成器返回表达式的代码。
- 其次,声明一个具有$generator引用的函数。
- 在$generator引用中,我们定义了yield "five","six","seven"和"eight"。
- 最后,我们迭代"$generator"函数直到结束(PHP_EOL),并输出yield的值以及生成器返回表达式。
生成器返回表达式:示例 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"
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP