생성기의 개념은 PHP 7에서 새로운 것이 아닙니다. 이전 버전에서도 사용할 수 있었기 때문입니다. 제너레이터를 사용하면 반복자 인터페이스를 구현하는 클래스를 구현하는 오버헤드 없이 구현이 쉬워집니다. 생성기의 도움으로 foreach를 작성할 수 있습니다. 메모리에 배열을 사용하지 않고 코드를 작성합니다. 또한 "메모리 제한 초과 오류"를 제거하는 데 도움이 됩니다.
PHP 7의 생성기 위임의 도움으로 다른 생성기에 자동으로 위임할 수 있습니다. 또한 순회 가능한 인터페이스를 구현하는 배열 및 개체를 허용합니다.
제너레이터 위임 예 1
<html> <head> <title> PHP 7 : Tutorialpoint </title> </head> <body> <?php function generator(){ yield "zero"; yield "one"; yield "two"; } function generator1(){ yield "three"; yield "four"; yield "five"; } function generator2(){ yield "six"; yield "seven"; yield "eight"; yield from generator(); yield "nine"; yield from generator1(); yield "ten"; } foreach (generator() as $value){ echo $value, PHP_EOL; } foreach(generator2() as $value){ echo $value, PHP_EOL; } ?> </body> </html>
출력
위 PHP 프로그램 생성기 위임 프로그램의 출력은 -
zero one two six seven eight zero one two nine three four five ten
설명
- 위의 코드를 편집기에서 작성할 수 있고 위의 예와 같이 필요한 HTML 코드를 작성할 수 있으며 HTML의 본문 부분은 생성기 반환 표현식을 위한 실제 PHP 7 코드를 삽입합니다.
- 둘째, 'generator', 'generator1', 'generator2'를 사용하여 3개의 함수를 선언합니다.
- 제너레이터 함수에서 수율 "0", "1" 및 "2"를 정의했습니다.
- "generator1" 함수에서 yield "three", "four" 및 "five"가 정의되었습니다.
- 'generator2' 함수에서 yield"six", "seven" 및 "eight"를 정의하여 generator2에서 생성기와 생성기 1을 읽습니다.
- 마지막으로 "generator" 및 "generator2" 함수를 수율 값을 반영할 때까지 반복합니다.