IteratorIteratorクラスが実際に行うことについて頭を悩ませることができないかもしれないので試してみてください。クラスはTraversableを実装できるので、エンジンはforeachを使用してループできることを認識し、IteratorIteratorはTraversableをIteratorに変換することになっていることを理解していますが、私はその方法を一生理解できません。
たとえば、PDOStatementクラスを取り上げます。PDOStatementでの反復を可能にするために、標準のIteratorメソッド(next、key、rewindなど)をどのように実装しますか?
質問が不明な場合は申し訳ありませんが、このクラスの正確な理由を把握するのに苦労しており、そのドキュメントは不足しています。
ありがとう、
意思
更新:phptファイルを調べてみると、IteratorIteratorを使用するテストが1つ見つかりました。
<?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";
}
?>
期待される出力は次のとおりです。
Hello
World
IteratorIteratorコンストラクトが$root->childを引数として取る方法と、子要素を反復処理する方法については、実際にはフォローしていません。