Iterator が PHP5 に追加されました。これは、階層データ構造の移動と処理に役立つ既製のインターフェイスのセットです。これは、PHP5 の最も興味深い新機能の 1 つです。 これらのイテレーターにより、XML ドキュメント ツリーまたはファイルのコレクションの処理に必要なコードが大幅に削減されます。 PHP5 では、ArrayIterator、CachingIterator、LimitIterator、RecursiveIterator、SimpleXMLIterator、DirectoryIterator など、多数のイテレータが使用されます。 DirectoryIterator を使用すると、ディレクトリ内のファイルを迅速かつ効率的に処理できます。コーディング プロセスにもう少し創造性を加えると、DirectoryIterator を使用して、ネストされたディレクトリ ツリーを再帰的に処理することもできます。どちらのタスクも、わずか数行のコードを使用して実行でき、「標準」アプローチに比べて大幅に改善されています。 単一レベルのディレクトリの処理
ネストされたディレクトリ ツリーを再帰的に処理することも、ほぼ同じくらい簡単です。この場合、DirectoryIterator は、単一レベルのディレクトリ内で見つかったすべてのオブジェクトをチェックして、それがファイルであるかディレクトリであるかを判断する必要があります。ディレクトリの場合は、さらに深く進んで次のレベルの内容を確認します。これは非常に複雑に聞こえるかもしれませんが、以前は通常 15 行を超えるコードが必要でした。
グラフィカルなディレクトリ ツリーの印刷は、ディレクトリ再帰の一般的なアプリケーションです。 Iterator クラスのドキュメントには、このアプリケーション専用に作成されたインスタンス クラスが含まれているため、Iterator を使用してこのタスクを処理するのは非常に簡単です。 DirectoryTreeIterator (Marcus Boerger のおかげ) は、前述した RecursiveIteratorIterator にその他の改良点を提供します。特に、ツリー構造内の深さと位置を表す ASCII タグが挙げられます。
まず、単一レベルのディレクトリを処理するという単純なタスクから始めます。次のコード (リスト A) を入力 (またはコピー) し、ローカル構成を反映するようにディレクトリ パスを変更します。