【PHP8.x】GlobIterator::getRealPath()メソッドの使い方
getRealPathメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
getRealPathメソッドは、GlobIteratorオブジェクトが現在指し示しているファイルやディレクトリの実パスを取得するメソッドです。この「実パス」とは、シンボリックリンクや相対パスを解決し、ファイルシステム上で実際にそのファイルやディレクトリが存在する場所を示す、正規化された絶対パスのことを指します。
GlobIteratorは、指定したパターンに合致するファイルやディレクトリを繰り返し処理する際に使用されます。しかし、その際に取得されるパスがシンボリックリンク経由であったり、../のような相対指定を含む場合、そのままではファイルの実体に基づいた処理を行う際に混乱を招く可能性があります。getRealPathメソッドを用いることで、そのような間接的なパスではなく、常にファイルシステム上の確かな位置を示すパスを確実に取得できます。
このメソッドは、実パスを文字列として返しますが、もし対象のファイルやディレクトリが存在しない場合や、実パスの解決に失敗した場合にはfalseを返します。ファイルのコピーや移動、あるいは絶対パスが必要な他のシステム連携処理など、ファイルの実体に対する正確なパスが必要な状況で非常に役立ちます。
構文(syntax)
1<?php 2 3// 指定されたパターンにマッチするファイルやディレクトリを反復処理するGlobIteratorを作成します。 4// 例として、現在のディレクトリ内のすべてのPHPファイル(*.php)を検索します。 5$iterator = new GlobIterator('*.php'); 6 7// イテレータをループし、各要素(SplFileInfoオブジェクト)に対して操作を行います。 8foreach ($iterator as $fileInfo) { 9 // 現在のファイルまたはディレクトリの、シンボリックリンクを解決した完全なパスを取得します。 10 // このメソッドは、SplFileInfoオブジェクトに対して呼び出されます。 11 echo $fileInfo->getRealPath() . PHP_EOL; 12} 13 14?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
string|false
GlobIterator::getRealPath メソッドは、イテレータが指すエントリの絶対パスを文字列で返します。指定されたパスが存在しない場合や、アクセス権がない場合は false を返します。