【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)

戻り値なし

戻り値はありません

【PHP8.x】endIterationメソッドの使い方 | いっしー@Webエンジニア