関数の概要
PHPの closedir 関数は、ディレクトリハンドルを閉じるための関数です。
ディレクトリを開いて読み込み処理を行った後、使用が終わったらディレクトリハンドルを閉じてリソースを解放する際に使います。
パラメータの説明
resource $dir_handle:
opendir関数で取得したディレクトリハンドルを指定します。閉じたいディレクトリリソースを渡してください。
戻り値
成功した場合は true を返し、失敗した場合は false を返します。通常は正しくディレクトリを閉じられれば true になります。
使用例
基本的な使い方
<?php
$dir = opendir('./sample_dir');
if ($dir) {
while (($file = readdir($dir)) !== false) {
echo "ファイル名: $filen";
}
closedir($dir);
}
?>
この例では、opendir でディレクトリを開き、中のファイル名を readdir で読み込み、その後 closedir でディレクトリを閉じています。これによりリソースを無駄に消費しません。
関数の戻り値を利用する例
<?php
$dir = opendir('/path/to/dir');
if ($dir) {
// ファイル読み込み処理
closedir($dir) or die('ディレクトリを閉じる際にエラーが発生しました');
}
?>
closedir の戻り値をチェックして、問題があればエラーメッセージを表示する例です。堅牢な処理に役立ちます。
ディレクトリ読み込み後に複数回閉じようとした場合の例
<?php
$dir = opendir('./docs');
if ($dir) {
// 何か処理
closedir($dir);
// 再度閉じるとfalseになる
var_dump(closedir($dir)); // bool(false)
}
?>
一度閉じたディレクトリハンドルに対して再度 closedir を呼ぶと失敗し false が返ります。二重に閉じないように注意しましょう。
関連する関数
opendir:ディレクトリを開き、ハンドルを取得するreaddir:ディレクトリ内のファイルやサブディレクトリの名前を1件ずつ読み込むscandir:ディレクトリ内のファイル一覧を配列で取得する(opendirやclosedirを意識しなくて済む)
まとめ
closedir はPHPでディレクトリを操作する際に必ず使う重要な関数です。
ディレクトリを開いて読み込みを終えた後に必ず呼び出し、リソースリークを防ぎましょう。
また戻り値を確認することで、処理が正常に終了したかどうかのチェックも可能です。
実務でもディレクトリを細かく操作したい場合には欠かせない関数として覚えておくことをおすすめします。
