답변: 생성기와 반복기는 전체 데이터 세트를 저장하지 않고도 값을 하나씩 생성할 수 있는 특수 함수이자 개체입니다. 생성기: 각 호출마다 하나의 값으로 일련의 값을 생성합니다. 반복자: 컬렉션 요소에 액세스하는 방법을 제공하고 순회 시 요소를 생성합니다. 실제 전투: 전체 데이터를 저장하지 않고 페이지별로 데이터 세트를 생성하는 데 사용됩니다. 메모리에 설정합니다.
PHP 고급 기능: 생성기와 반복자의 마법 같은 사용
Generator
생성기는 일련의 값을 생성하는 데 사용되는 특수 함수입니다. 일반 함수와 달리 생성기는 전체 값 배열을 메모리에 저장하지 않고도 각 호출마다 값을 생성할 수 있습니다.
function numbersGenerator() { for ($i = 1; $i <= 10; $i++) { yield $i; } } foreach (numbersGenerator() as $number) { echo $number . "\n"; }
Iterator
반복자는 컬렉션의 요소에 액세스하는 방법을 제공하는 개체입니다. 생성기와 마찬가지로 반복기는 전체 컬렉션을 메모리에 저장하지 않고 컬렉션을 반복하면서 요소를 생성할 수 있습니다.
class NumberIterator implements Iterator { private $start; private $end; private $current; public function __construct($start, $end) { $this->start = $start; $this->end = $end; $this->current = $start; } public function rewind() { $this->current = $this->start; } public function current() { return $this->current; } public function key() { return $this->current; } public function next() { $this->current++; } public function valid() { return $this->current <= $this->end; } } $iterator = new NumberIterator(1, 10); foreach ($iterator as $number) { echo $number . "\n"; }
실용 사례: Paginator
Generator와 Iterator는 페이징 시나리오에 매우 적합합니다. 생성기나 반복기를 사용하면 전체 데이터세트를 메모리에 저장하지 않고도 페이지별로 데이터세트를 생성할 수 있습니다.
아아아아위 내용은 PHP 고급 기능: 생성기와 반복자의 놀라운 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!