【PHP8.x】endIterationメソッドの使い方
endIterationメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
endIterationメソッドは、RecursiveTreeIteratorによる再帰的なイテレーションがすべて終了した後に、後処理を実行するメソッドです。RecursiveTreeIteratorは、階層構造を持つデータを木のように走査する際に利用され、このendIterationメソッドは、その走査処理がすべての要素をたどり終えた後、最後に一度だけ呼び出されます。このメソッドは通常、直接呼び出すものではなく、RecursiveTreeIteratorクラスを継承した独自のクラス内で、その振る舞いを上書き(オーバーライド)して使用します。具体的な用途として、ファイルシステムのディレクトリ構造をHTMLのネストしたリストとして出力する処理が挙げられます。その場合、イテレーション開始時にbeginIterationメソッドで開始タグ<ul>を出力し、すべての要素の処理が完了した後に、このendIterationメソッドで閉じタグ</ul>を出力するといった後処理を実装できます。このように、一連の反復処理の最後に必ず実行したいクリーンアップ処理などを定義するために利用される、重要なメソッドです。このメソッドは引数を取らず、戻り値もありません。
構文(syntax)
1<?php 2 3class MyTreeIterator extends RecursiveTreeIterator 4{ 5 /** 6 * イテレーションが完全に終了した後に呼び出されます。 7 */ 8 public function endIteration(): void 9 { 10 echo "--- End of iteration ---" . PHP_EOL; 11 } 12} 13 14$data = [ 15 'Item 1', 16 'Item 2' => [ 17 'Sub-Item 2.1', 18 'Sub-Item 2.2', 19 ], 20 'Item 3', 21]; 22 23$arrayIterator = new RecursiveArrayIterator($data); 24$treeIterator = new MyTreeIterator($arrayIterator); 25 26// foreach ループがすべて完了すると、endIteration() が自動的に呼び出されます。 27foreach ($treeIterator as $key => $value) { 28 echo $treeIterator->getPrefix() . " $value" . PHP_EOL; 29} 30 31?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
戻り値なし
戻り値はありません