
1. Também é um iterador. Quando instanciado, precisa ser passado para outro iterador para armazenamento interno, ou seja, a iteração interna InnerIterator.
2. A função do iterador original pode ser atualizada herdando IteratorIterator.
Seus parâmetros de construção também devem ser iteradores, e a própria assinatura do parâmetro requer um objeto que implemente a interface Traversable.
Exemplo
classe OutIterator estende IteratorIterator
{
função pública retroceder()
{
eco __METHOD__, PHP_EOL;
return pai::rebobinar();
}
função pública válida()
{
eco __METHOD__, PHP_EOL;
return pai::válido();
}
função pública atual()
{
eco __METHOD__, PHP_EOL;
retornar pai::atual() .
}
chave de função pública()
{
eco __METHOD__, PHP_EOL;
retornar pai::chave();
}
função pública próxima()
{
eco __METHOD__, PHP_EOL;
return pai::próximo();
}
função pública getInnerIterator()
{
eco __METHOD__, PHP_EOL;
return parent::getInnerIterator();
}
}
$iterador = new OutIterator(new ArrayIterator([1, 2, 3]));
foreach ($iterador as $k => $v) {
echo $k, ': ', $v, PHP_EOL;
}
// OutIterator::rebobinar
// OutIterator::válido
// OutIterator::atual
// OutIterator::chave
// 0: 1_sufixo
// OutIterator::próximo
// OutIterator::válido
// OutIterator::atual
// OutIterator::chave
// 1: 2_sufixo
// OutIterator::próximo
// OutIterator::válido
// OutIterator::atual
//OutIterator::chave
// 2: 3_sufixo
// OutIterator::próximo
// OutIterator::válidoO texto acima é a compreensão do iterador de empacotamento PHP, espero que seja útil para todos. Mais guia de aprendizagem de PHP: rede de código-fonte