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

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

作成日: 更新日:

基本的な使い方

getFilenameメソッドは、FilesystemIteratorクラスのインスタンスが指し示す現在の要素(ファイルまたはディレクトリ)の名前を取得するために使用するメソッドです。FilesystemIteratorは、ディレクトリ内のファイルやサブディレクトリを一つずつ順番に走査する際に用いられる、PHPの組み込みイテレータの一つです。

このメソッドを呼び出すと、イテレータが現在ポイントしているファイルまたはディレクトリの「ベース名」が文字列として返されます。ここでいうベース名とは、パス情報からディレクトリの階層構造を除いた、純粋なファイル名やディレクトリ名そのものを指します。例えば、イテレータが「/path/to/my_document.txt」というファイルを指している場合、getFilenameメソッドは「my_document.txt」という文字列を返します。

同じFilesystemIteratorクラスには、現在の要素のフルパスを返すgetPathnameメソッドも存在しますが、getFilenameメソッドはファイル名やディレクトリ名だけを必要とする場面で特に有用です。例えば、ファイル一覧をユーザーに表示する際にファイル名だけをリストアップしたい場合や、特定の名前パターンに合致するファイルだけを識別したい場合などに役立ちます。PHP 8においても、このメソッドの基本的な機能と振る舞いは一貫しており、ファイルシステムを効率的に操作するための重要なツールとして利用できます。

構文(syntax)

1<?php
2
3// 作業用の一時ディレクトリを作成します。
4$tempDir = __DIR__ . '/temp_example_dir';
5if (!is_dir($tempDir)) {
6    mkdir($tempDir);
7}
8// テスト用のファイルを作成します。
9file_put_contents($tempDir . '/document.txt', 'これはテストドキュメントです。');
10file_put_contents($tempDir . '/image.jpg', 'これはテスト画像です。');
11
12try {
13    // FilesystemIterator のインスタンスを作成します。
14    // 指定したディレクトリ内のファイルやディレクトリを繰り返し処理できます。
15    $iterator = new FilesystemIterator($tempDir);
16
17    echo "ディレクトリ内のファイル名:\n";
18    foreach ($iterator as $fileInfo) {
19        // FilesystemIterator::getFilename() メソッドを使って、
20        // 現在のイテレータが指しているファイルまたはディレクトリの名前を取得します。
21        echo "- " . $iterator->getFilename() . "\n";
22    }
23
24} catch (Exception $e) {
25    echo "エラーが発生しました: " . $e->getMessage() . "\n";
26} finally {
27    // 例の実行後に作成したファイルとディレクトリをクリーンアップします。
28    if (is_dir($tempDir)) {
29        $files = glob($tempDir . '/*');
30        foreach ($files as $file) {
31            if (is_file($file)) {
32                unlink($file);
33            }
34        }
35        rmdir($tempDir);
36    }
37}
38
39?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

string

FilesystemIterator::getFilename() は、現在のファイルまたはディレクトリの名前を文字列として返します。

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