이전 버전의 PHP에서는 제너레이터 함수가 표현식을 반환할 수 없었지만, PHP 5.5부터는 기존에 제너레이터 리턴 표현식이 추가되었습니다. 제너레이터 리턴 표현식을 사용하면 제너레이터 내에서 리턴문을 사용하기 쉽고, 최종 표현식의 값도 리턴합니다.
- 제너레이터 반환 표현식을 사용하면 표현식의 값만 반환할 수 있지만 참조는 반환할 수 없습니다. 새로운 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와 관련하여 "5","6","7"및 "8"수익률을 정의했습니다.
- 마지막으로 "$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"