DirectoryIteratorの活用

再帰的にディレクトリを削除する

<?php


$path  = 'hchuno/dacchuno/hoge';
$items = new RecursiveIteratorIterator(
                    new RecursiveDirectoryIterator(
                        $path,
                        RecursiveDirectoryIterator::CURRENT_AS_SELF
                    ),
                    RecursiveIteratorIterator::CHILD_FIRST
               );
foreach ($items as $item) {
    if ($item->isFile() || $item->isLink()) {
        unlink($item->getPathname());
    } elseif ($item->isDir() && !$item->isDot()) {
        rmdir($item->getPathname());
    }
}
rmdir($path);


任意のディレクトリ内のファイルを更新日時順で取得する

<?php


$dir = 'mychuno/hogehoge';
if (! file_exists($dir)) {
    return null;
}
$result = array();
$iterator = new DirectoryIterator($dir);
foreach ($iterator as $itr) {
    if (! $itr->isFile()) {
        continue;
    }
    $result[$itr->getMTime()] = array(
        'name'     => $itr->getFileName(),
        'updated' => $itr->getMTime(),
    );
}
ksort($result);
return $result;