1. 인스턴스화되면 내부 저장을 위한 다른 반복자, 즉 내부 반복 InnerIterator로 전달되어야 합니다.
2. 원래 반복자 함수는 IteratorIterator를 상속하여 업그레이드할 수 있습니다.
생성 매개변수도 반복자여야 하며 매개변수 서명 자체에는 Traversable 인터페이스를 구현하는 객체가 필요합니다.
예
OutIterator 클래스는 IteratorIterator를 확장합니다. { 공개 함수 되감기() { 에코 __METHOD__, PHP_EOL; return parent::rewind(); } 공개 함수 유효() { 에코 __METHOD__, PHP_EOL; 부모 반환::valid(); } 공개 함수 현재() { 에코 __METHOD__, PHP_EOL; 부모::현재() '_suffix'를 반환합니다. } 공개 기능 키() { 에코 __METHOD__, PHP_EOL; return parent::key(); } 공개 함수 next() { 에코 __METHOD__, PHP_EOL; 부모 반환::next(); } 공개 함수 getInnerIterator() { 에코 __METHOD__, PHP_EOL; return parent::getInnerIterator(); } } $iterator = new OutIterator(new ArrayIterator([1, 2, 3])); foreach ($k => $v로 $iterator) { 에코 $k, ': ', $v, PHP_EOL; } // OutIterator::rewind // OutIterator::유효함 // OutIterator::현재 // OutIterator::키 // 0: 1_접미사 // OutIterator::next // OutIterator::유효함 // OutIterator::현재 // OutIterator::키 // 1: 2_접미사 // OutIterator::next // OutIterator::유효함 // OutIterator::현재 // OutIterator::키 // 2: 3_접미사 // OutIterator::next // OutIterator::유효함
이상은 PHP 패키징 반복자에 대한 이해입니다. 모든 분들께 도움이 되기를 바랍니다. 추가 PHP 학습 가이드: 소스 코드 네트워크