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

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

作成日: 更新日:

基本的な使い方

endChildrenメソッドは、RecursiveTreeIteratorが特定の階層にある子要素の反復処理をすべて完了した際に、内部的に呼び出される処理を実行するメソッドです。このイテレータは、ディレクトリ構造のような階層的なデータをツリー形式で表示するために使用されます。endChildrenメソッドは、ある階層の最後の要素を処理し終え、親の階層へ戻る直前のタイミングで自動的に実行されます。これは、子要素の処理を開始する前に呼び出されるbeginChildrenメソッドと対になる機能です。beginChildrenが階層の開始を、endChildrenが階層の終了を管理することで、正確なツリー構造の描画が可能になります。通常、このメソッドをプログラマが直接呼び出すことはありません。しかし、RecursiveTreeIteratorを継承して独自のクラスを作成し、このメソッドをオーバーライド(再定義)することで、各階層の終わりに特定の区切り文字やHTMLタグを追加するなど、出力形式を自由にカスタマイズすることが可能です。

構文(syntax)

1<?php
2class MyTreeIterator extends RecursiveTreeIterator
3{
4    public function endChildren(): void
5    {
6        // このメソッドは、子要素を持つ階層の反復処理が
7        // 終了した直後に自動的に呼び出されます。
8    }
9}
10
11$data = [
12    'Item 1',
13    'Item 2' => [
14        'SubItem A',
15        'SubItem B'
16    ],
17    'Item 3'
18];
19
20$iterator = new RecursiveArrayIterator($data);
21$treeIterator = new MyTreeIterator($iterator);
22
23// foreach ループでイテレータを走査すると、
24// 'Item 2' の子要素 ('SubItem A', 'SubItem B') の処理が終わった時点で、
25// endChildren() メソッドが自動的に呼び出されます。
26// このメソッドは引数を取らず、何も返しません (void)。
27foreach ($treeIterator as $item) {
28    // イテレーションの処理
29}

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません