Spróbuj, jak mogę, nie mogę zrozumieć, co faktycznie robi klasa IteratorIterator. Rozumiem, że klasy mogą implementować Traversable, więc silnik wie, że może zapętlić się za pomocą foreach i Zdaję sobie sprawę, że IteratorIterator ma przekształcić wszystko, co jest Traversalable w Iterator, ale nie mogę do końca zrozumieć, w jaki sposób.Jak działa klasa IteratorIterator PHP?
Weźmy na przykład klasę PDOStatement; w jaki sposób zaimplementowane zostaną standardowe metody Iteratora (next, key, rewind, itp.), aby umożliwić iterację po PDOStatement?
Przepraszam, jeśli moje pytanie jest niejasne, po prostu staram się zrozumieć dokładny powód tej klasy, a dokumentacja na niej jest niewielka.
Dzięki,
Will
Aktualizacja: Przechodzi plików PHPT, znalazłem jeden test, który wykorzystuje 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";
}
?>
Oczekiwany wynik jest:
Hello
World
Tak naprawdę nie śledzę, jak konstrukcja IteratorIterator przyjmuje $ root-> child as argument i sposób, w jaki udaje mu się powtórzyć elementy potomne.
Znalazłem odpowiedź [tutaj] (http://blog.ircmaxell.com/2011/10/iteratoriterator-php-inconsistencies.html). Ale wydaje mi się, że IteratorIterator ma teraz niewielkie znaczenie, prawda? – akond