>백엔드 개발 >PHP 튜토리얼 >PHP 고급 기능: 생성기와 반복자의 놀라운 사용

PHP 고급 기능: 생성기와 반복자의 놀라운 사용

WBOY
WBOY원래의
2024-06-01 20:44:001007검색

답변: 생성기와 반복기는 전체 데이터 세트를 저장하지 않고도 값을 하나씩 생성할 수 있는 특수 함수이자 개체입니다. 생성기: 각 호출마다 하나의 값으로 일련의 값을 생성합니다. 반복자: 컬렉션 요소에 액세스하는 방법을 제공하고 순회 시 요소를 생성합니다. 실제 전투: 전체 데이터를 저장하지 않고 페이지별로 데이터 세트를 생성하는 데 사용됩니다. 메모리에 설정합니다.

PHP 고급 기능: 생성기와 반복자의 놀라운 사용

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.