PHP入門 DirectoryIteratorクラス
DirectoryInteratorクラスは、指定されたフォルダー配下のファイル情報にアクセスするためのクラスです。
構文:DirectoryIteratorクラス
new DirectoryIterator(string $path)
$path | フォルダーパス |
フォルダーを読み込む場合、まず、そのフォルダーを開かなくてはなりません。この行為を表すのが、DirectoryIteratorクラスのインスタンス化です。
フォルダー配下の要素の順に取得する
DirectoryIteratorは配列のような性質を持ったオブジェクトで、読み込んだフォルダーの内容をあたかも配列であるかのように処理できます。
foreach($dir as $file){
if($file->isFile()){
・・・
}
}
foreachループでDirectoryIteratorオブジェクトに含まれるファイル要素を順に取り出し、仮変数$fileにセットします。DirectoryIteratorクラスが読み出すのはファイルだけではなく、サブフォルダやリンク、カレントフォルダを表す「.」や親フォルダを表す「..」なども含みます。これが不要な場合は、ifブロックで除外します。ファイル要素がファイルかどうかは「isFile」メソッドを使用します。
ファイル情報を取得する
取得したファイルに関する情報を取得するには次のメソッドを利用します。これらのメソッドには、同等の機能を提供するファイルシステム関数もあります。
DirectoryIteratorクラスの主なメソッド
メソッド名 | 関数名 | 概要 |
---|---|---|
getATime() | fileatime($path) | 最終アクセス日時 |
getCTime() | filectime($path) | 作成日時 |
getBasename() | basename($path) | ベース名 |
getMTime() | filemtime($path) | 最終更新日時 |
getPath() | dirname($path) | ファイルのパス(ファイル名を除く) |
getPathname() | – | ファイルのパス(ファイル名を含む) |
getSize() | filesize($path) | ファイルサイズ |
isDir() | is_dir($path) | ファイルがフォルダーであるか |
isFile() | is_file($path) | ファイルが通常のファイルであるか |
isLink() | is_link($path) | ファイルがシンボリックリンクであるか |
getAtime()/getCTime/getMTimeメソッドは、戻り値としてタイムスタンプ値を返します。
例
<!DOCTYPE html> <html>
<head>
<meta charset="UTF-8" />
<title>PHPサンプル</title>
</head>
<body>
<table class="table">
<thead>
<tr>
<th>ファイル</th>
<th>サイズ</th>
<th>最終アクセス日</th>
<th>最終更新日</th>
</tr>
</thead>
<tbody>
<?php
//カレントフォルダをオープン
$dir = new DirectoryIterator('./');
//フォルダを内容を順番に読み込み
foreach($dir as $file){
//読み込んだ要素がファイルである場合のみ表示処理
if($file->isFile()){
?>
<tr>
<td><?= $file->getFileName(); ?></td>
<td><?= $file->getSize(); ?></td>
<td><?= date('Y/m/d H:i:s',$file->getATime()) ?></td>
<td><?= date('Y/m/d H:i:s',$file->getMTime()) ?></td>
</tr>
<?php
}
}
?>
</tbody>
</table>
</body>
</html>