Versuchen Sie, wie ich könnte, kann ich nicht verstehen, was die IteratorIterator-Klasse tatsächlich tut. Ich verstehe, dass Klassen Traversable implementieren können, so dass die Engine weiß, dass es Schleife foreach und kann ich erkennen, dass IteratorIterator alles konvertieren soll, das Traversable in einen Iterator ist, aber ich kann nicht für das Leben von mir verstehen, wie.Wie funktioniert die PHP IteratorIterator Klasse?
Nehmen Sie zum Beispiel die Klasse PDOStatement; Wie würden die Standard-Iterator-Methoden (Next, Key, Rewind, etc.) implementiert werden, um eine Iteration über ein PDOS-Statement zu ermöglichen?
Entschuldigung, wenn meine Frage unklar ist, bin ich gerade dabei, den genauen Grund für diese Klasse zu begreifen und die Dokumentation darüber ist spärlich.
Danke,
Will
Update: die PHPT Dateien Wenn man durch, fand ich einen Test, der IteratorIterator verwendet:
<?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";
}
?>
Die erwartete Ausgabe lautet:
Hello
World
Ich folge nicht wirklich, wie das IteratorIterator-Konstrukt $ root-> child as annimmt ein Argument und wie es gelingt, über die Kindelemente zu iterieren.
Ich fand die Antwort [hier] (http://blog.ircmaxell.com/2011/10/iteratoriterator-php-inconsisstencies.html). Aber es scheint mir, dass der IteratorIterator jetzt von geringer Bedeutung wird, nicht wahr? – akond