Por más que lo intente, no entiendo qué hace la clase IteratorIterator. Entiendo que las clases pueden implementar Traversable para que el motor sepa que puede hacer bucles usando foreach y. Me doy cuenta de que se supone que IteratorIterator convierte todo lo que es Traversable en un iterador, pero no puedo entender cómo.¿Cómo funciona la clase PHP IteratorIterator?
Tome por ejemplo, la clase PDOStatement; ¿cómo se implementarían los métodos estándar de iterador (siguiente, clave, rebobinado, etc.) para permitir la iteración sobre una declaración PDOS?
Lo siento si mi pregunta no es clara, sólo estoy luchando para comprender la razón exacta de esta clase y la documentación es escasa.
Gracias,
Will
Actualización: El paso por los archivos de HPTP, me encontré con una prueba que utiliza IteratorIterator:
<?php
$root = simplexml_load_string('<?xml version="1.0"?>
<root>
<child>Hello</child>
<child>World</child>
</root>
');
foreach (new IteratorIterator($root->child) as $child) {
echo $child."\n";
}
?>
El resultado esperado es:
Hello
World
Realmente no sigo cómo el constructo IteratorIterator toma $ root-> child como un argumento y cómo se las arregla para iterar sobre los elementos secundarios.
he encontrado la respuesta [aquí] (http://blog.ircmaxell.com/2011/10/iteratoriterator-php-inconsistencies.html). Pero me parece que el IteratorIterator ahora tiene poca importancia, ¿no es así? – akond