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

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

作成日: 更新日:

基本的な使い方

getSubPathnameメソッドは、PHPのRecursiveDirectoryIteratorクラスに属し、現在のイテレータが指す要素のサブパス名を取得するために実行するメソッドです。RecursiveDirectoryIteratorは、指定されたディレクトリとその内部のサブディレクトリを再帰的に巡回(イテレート)するためのクラスであり、このメソッドはその巡回中に現在処理しているファイルやディレクトリが、開始点から見てどの位置にあるかを正確に示します。

具体的には、RecursiveDirectoryIteratorを初期化する際に指定した「ベースディレクトリ」からの相対パスとして、現在のファイル名またはディレクトリ名を返します。例えば、/var/www/htmlというディレクトリをベースとして巡回を開始し、現在イテレータが/var/www/html/src/Controller/IndexController.phpというファイルを指している場合、getSubPathnameメソッドはsrc/Controller/IndexController.phpという文字列を返します。

このメソッドを使用することで、巡回中のファイルやディレクトリがベースディレクトリからの相対的な階層構造においてどのような位置にあるのかを容易に把握できます。これは、特定のディレクトリ構造を持つファイルのパスを加工したり、ベースディレクトリからの相対パスに基づいて処理を分岐させたりするようなシステム開発において、非常に有用です。元のベースディレクトリのパスを含まずに、ファイルやディレクトリの相対的な位置を示す情報を取得したい場合に役立つメソッドです。

構文(syntax)

1<?php
2
3$iterator = new RecursiveDirectoryIterator(__DIR__, RecursiveDirectoryIterator::SKIP_DOTS);
4$recursiveIterator = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST);
5
6foreach ($recursiveIterator as $fileInfo) {
7    echo $fileInfo->getSubPathname() . PHP_EOL;
8}

引数(parameters)

引数なし

引数はありません

戻り値(return)

string

再帰的なディレクトリ内の現在のエントリのサブパス名(ディレクトリ名からファイル名までのパス)を文字列として返します。