【PHP8.x】getInnerIteratorメソッドの使い方

getInnerIteratorメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

getInnerIteratorメソッドは、RecursiveTreeIteratorオブジェクトが内部でラップしている元のイテレータを取得するメソッドです。RecursiveTreeIteratorクラスは、RecursiveArrayIteratorなどの他の再帰イテレータを受け取り、その要素をツリー構造で表示する機能を追加します。このとき、RecursiveTreeIteratorは元のイテレータを包み込む「ラッパー」として動作します。getInnerIteratorメソッドを呼び出すことで、このツリー表示の機能層を取り除き、内部に存在する元のイテレータオブジェクトそのものにアクセスできます。これにより、開発者はツリーとしての表現とは別に、元のデータソースが持つ本来のメソッドやプロパティを直接利用することが可能になります。例えば、ファイルシステムを走査するイテレータをラップしている場合、このメソッドで元のイテレータを取得し、現在のファイルパスを取得するなどの操作ができます。このメソッドはOuterIteratorインターフェースによって定義されており、イテレータを装飾するデザインパターンで重要な役割を果たします。

構文(syntax)

1<?php
2
3// RecursiveTreeIterator のインスタンスを準備します
4$treeIterator = new RecursiveTreeIterator(
5    new RecursiveArrayIterator(['item', ['child1', 'child2']])
6);
7
8// イテレータを子を持つ要素 (配列) に移動します
9$treeIterator->seek(1);
10
11// 現在の要素の内部イテレータを取得します
12$innerIterator = $treeIterator->getInnerIterator();
13
14?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

RecursiveIterator

このメソッドは、RecursiveTreeIterator が内部的に使用している、より具体的なイテレータ(反復処理を行うためのオブジェクト)を返します。これにより、イテレータの構造をさらに深く調べたり、操作したりすることが可能になります。