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

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

作成日: 更新日:

基本的な使い方

getInnerIteratorメソッドは、InfiniteIteratorオブジェクトが内部で保持している元のイテレータ(インナーイテレータ)を取得するために使用するメソッドです。InfiniteIteratorクラスは、コンストラクタで指定された別のイテレータを、その終端に達しても自動的に巻き戻し、無限に繰り返し処理できるようにするデコレータです。このgetInnerIteratorメソッドを呼び出すと、InfiniteIteratorによってラップされている、つまり飾られている元のイテレータオブジェクトそのものにアクセスすることができます。例えば、ArrayIteratorをInfiniteIteratorでラップして無限ループを実装している途中で、元の配列データを持つArrayIteratorの状態を確認したり、直接操作したりする必要が生じた場合に役立ちます。このメソッドは引数を取らず、返り値として内部に保持されているIteratorインターフェースを実装したオブジェクトを返します。これにより、InfiniteIteratorとしての無限ループの振る舞いとは別に、その基となっているイテレータを直接扱うことが可能になります。

構文(syntax)

1<?php
2
3// 元となるイテレータを作成します
4$arrayIterator = new ArrayIterator(['first', 'second', 'third']);
5
6// InfiniteIteratorで元のイテレータをラップします
7$infiniteIterator = new InfiniteIterator($arrayIterator);
8
9// getInnerIterator() を使って、ラップされている元のイテレータを取得します
10$innerIterator = $infiniteIterator->getInnerIterator();
11
12// 取得したイテレータのクラス名と、現在の要素を表示します
13var_dump(get_class($innerIterator)); // string(13) "ArrayIterator"
14var_dump($innerIterator->current());   // string(5) "first"
15
16?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?Iterator

InfiniteIterator インスタンスが内部で保持している Iterator インスタンス、またはそれが設定されていない場合は null を返します。