【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 を返します。