Princípio de funcionamento
1. Antes da primeira iteração, execute o método iterator::rewind().
Executa apenas uma vez, retorna o primeiro elemento do iterador, mas o método não tem valor de retorno
2. Verifique se o primeiro elemento é válido.
Os métodos de autenticação podem ser personalizados. Se o valor de retorno for verdadeiro, a execução continua; se o valor de retorno for falso, a iteração termina.
3. foreach continua a chamar o Iterator.
Retorna a chave e o valor do recurso especificado.
4. O corpo do método foreach
var_dump($chave,$valor)
5. Após cada iteração, chame o Iterador para determinar o próximo elemento e repita a segunda etapa.
Exemplo
string(18) "myIterator::rewind" //Chama o método rewind antes do início da iteração, retorna ao primeiro elemento do iterador e executa $this->position = 1; string(17) "myIterator::valid" //Verifica se o elemento atual $this->array[1] é válido e continua a execução se for válido; string(19) "myIterator::current" // Retorna o valor correspondente ao elemento atual $this->array[0]='firstelement' string(15) "myIterator::key" // Retorna a chave do elemento atual $this->position = 1 int(1) //var_dump($chave) string(12) "segundoelemento" //var_dump($valor) string(16) "myIterator::next" //Avançar para o próximo elemento++$this->position=2 string(17) "myIterator::valid" //Verifica se o elemento atual $this->array[2] é válido e continua a execução se for válido; string(19) "myIterator::current" //Repita os passos anteriores string(15) "myIterator::key" //Repita os passos anteriores int(2) //Repita os passos anteriores string(11) "lastelement" //Repita os passos anteriores string(16) "myIterator::next" //Avançar para o próximo elemento++$this->position=3 string(17) "myIterator::valid" //Verifica se o elemento atual $this->array[3] é válido, sai da travessia se for inválido
O texto acima é uma análise do princípio de funcionamento do iterador PHP, espero que seja útil para todos.