関数の概要
PHPの dir クラスは、指定したディレクトリの内容を読み取るためのオブジェクト指向インターフェースを提供します。ディレクトリの一覧を取得したり、ディレクトリ内のファイルやサブディレクトリを順番に処理したりする際に役立ちます。従来の関数よりも使いやすく、読みやすいコードを書けるのが特徴です。
パラメータの説明
path(string)
読み取りたいディレクトリのパスを指定します。絶対パスまたは相対パスを使用可能です。
戻り値
dir クラスのインスタンスを返します。このインスタンスを使ってディレクトリの内容を順番に読み取ることができます。ディレクトリが存在しない場合や読み込み権限がない場合はエラーを引き起こす可能性があります。
使用例
基本的な使い方
<?php
$dir = dir("example_dir");
while (($file = $dir->read()) !== false) {
echo $file . "<br>";
}
$dir->close();
?>
上記のコードは「example_dir」ディレクトリ内のすべてのファイルやフォルダ名を順番に取得して表示します。読み取りが終わったら最後に close() メソッドでディレクトリのリソースを解放しています。
特定のファイルを除外して一覧表示する例
<?php
$dir = dir("example_dir");
while (($file = $dir->read()) !== false) {
if ($file === "." || $file === "..") {
continue; // 「.」「..」をスキップ
}
echo $file . "<br>";
}
$dir->close();
?>
「.」や「..」は現在のディレクトリおよび親ディレクトリを表す特殊な名前なので、一覧表示時には除外することが多いです。
ファイルタイプを判別しながら表示する例
<?php
$dir = dir("example_dir");
while (($file = $dir->read()) !== false) {
if ($file === "." || $file === "..") {
continue;
}
$fullPath = "example_dir/" . $file;
if (is_dir($fullPath)) {
echo "[DIR] " . $file . "<br>";
} else {
echo "[FILE] " . $file . "<br>";
}
}
$dir->close();
?>
ファイルかディレクトリかを判別し、区別しながら一覧表示したい場合に便利な方法です。
関連する関数
scandir()– 指定したディレクトリの一覧を配列で取得するopendir()– ディレクトリハンドルを取得し、readdir()と併用して読み取るreaddir()–opendir()で開いたディレクトリからエントリーを読み込むclosedir()–opendir()で開いたディレクトリを閉じる
まとめ
dir クラスはPHPでディレクトリの中身を簡単かつオブジェクト指向で扱いたいときに有用です。読み取り処理を read() メソッドで順に行い、終われば close() でリソースを解放します。ファイル一覧の取得やフィルター処理を行う際にも直感的に使え、実務でのディレクトリ操作に非常に役立つ機能です。
