생성기를 설명하기 전에 반복자를 소개하겠습니다.
PHP에서는 일반적으로 foreach를 사용하여 배열을 탐색합니다.
객체를 횡단 가능하게 만들고 싶다면 어떻게 해야 할까요?
PHP는 Iterator 인터페이스를 제공합니다. 이 인터페이스가 구현되는 한 이 객체는 foreach를 통해 반복될 수 있습니다.
예제는 다음과 같습니다.
foreach를 통해 $it를 탐색하면 PHP는 순서대로 자신을 호출합니다.
rewind() 첫 번째 요소로 재설정
valid() 현재 위치가 유효한지 확인
current( ) 현재 요소를 반환합니다.
key() 현재 요소의 키를 반환합니다.
next()는 다음 요소를 가리킵니다.
생성기는 PHP 5.5에 도입된 새로운 기능이지만 사용하는 사람은 거의 없는 것 같습니다. 현재요.
PHP 생성기란 무엇인가요?
다음은 공식 PHP 문서에 있는 생성기에 대한 설명입니다.
생성기는 간단한 객체 반복을 구현하는 더 쉬운 방법을 제공합니다. Iterator 인터페이스를 구현하기 위해 클래스를 정의하는 방법에 비해 성능 오버헤드와 복잡성이 높습니다. 훨씬 더 많이 감소합니다.
생성기를 사용하면 foreach 블록에 코드를 작성하여 메모리에 배열을 만들지 않고도 데이터 집합을 반복할 수 있습니다. 이렇게 하면 메모리 제한에 도달하거나 상당한 처리 시간이 소요됩니다. 대신 일반 사용자 정의 함수처럼 생성기 함수를 작성할 수 있으며, 한 번만 반환하는 일반 함수 대신 생성기는 반복해야 하는 값을 생성하는 데 필요한 만큼 여러 번 생성할 수 있습니다.
생성기의 장점을 반영하기 위해 아래에서 비교용 함수를 정의합니다.
이렇게 큰 배열이 생성되어 메모리에 반복되기 때문에 PHP는 단일 프로세스의 메모리 제한을 초과했다는 메시지를 직접 표시합니다. .
이제 생성기를 사용하여 처리해 보겠습니다.
func1()을 호출하고 Generator 개체를 반환하는 것을 볼 수 있습니다. 이 개체는 foreach를 사용하여 반복할 수 있습니다. PHP는 Generator 인스턴스에 다음을 요청합니다. 계산하고 반복할 다음 값을 제공합니다. 생성기의 장점은 값이 생성될 때마다 생성기의 내부 상태가 일시 중지되고, 생성기에서 다음 값이 요청되면 내부 상태가 복원된다는 것입니다. 생성기의 내부 상태는 함수 정의 본문의 끝에 도달하거나 빈 return 문을 만날 때까지 일시 중지와 재개 사이를 계속 전환합니다.
위 내용은 PHP 생성기란 무엇입니까? 예제를 통해 PHP 생성기를 이해하는 데 도움이 되는 10분의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!