Home > PHP > RecursiveDirectoryIteratorで再帰なしでファイル走査

RecursiveDirectoryIteratorで再帰なしでファイル走査

  • 2007-02-25 (日) 15:25
  • PHP
この記事の所要時間: 038

あるディレクトリ内のファイルを走査して各ファイルに処理を行うなんて時に今までは再帰を使って実装していました。

PHP5な環境ならRecursiveDirectoryIteratorを使ってこんな感じで作ってました。

<?php
function gc(RecursiveDirectoryIterator $itr, $term) {
  foreach ($itr as $elem) {
    if ($itr->hasChildren()) {
      gc($itr->getChildren(), $term);
    } else {
      if ($elem->isFile() && $elem->getMTime() < $term) {
//        unlink($elem->getPathname());
        echo $elem->getPathname() . PHP_EOL;
      }
    }
  }
}

$term = strtotime('-1 day');
gc(new RecursiveDirectoryIterator('/tmp'), $term);
?>

これRecursiveIteratorIterator(凄い名前。。。)を使えば再帰なしで書けるんですね。

<?php
function gc($path, $term) {
  $itr = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
  foreach ($itr as $elem) {
    if ($elem->isFile() && $elem->getMTime() < $term) {
//        unlink($elem->getPathname());
      echo $elem->getPathname() . PHP_EOL;
    }
  }
}

$term = strtotime('-1 day');
gc('/tmp', $term);
?>

うーん便利。

GoogleCodeSearchで見るとPHPUnitやらPHP_CodeSnifferで使われていました。

SPLはもうちょっと情報が欲しいですね。

参考:PHPのSPLを使用してディレクトリを操作する – PHPプロ!ニュース

Pocket

follow us in feedly

トラックバック:0

このエントリーのトラックバックURL
/blog/2007/02/php_recursive_directory_iterator.html/trackback
Listed below are links to weblogs that reference
RecursiveDirectoryIteratorで再帰なしでファイル走査 from Shin x blog

Home > PHP > RecursiveDirectoryIteratorで再帰なしでファイル走査

検索
フィード
メタ情報

Return to page top