
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 학습 가이드: 소스 코드 네트워크