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

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

  • 2007-02-25 (日) 15:25
  • PHP
  • このエントリーをはてなブックマークに追加
この記事の所要時間: 038

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

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

PHP:
  1. <?php
  2. function gc(RecursiveDirectoryIterator $itr, $term) {
  3.   foreach ($itr as $elem) {
  4.     if ($itr->hasChildren()) {
  5.       gc($itr->getChildren(), $term);
  6.     } else {
  7.       if ($elem->isFile() && $elem->getMTime() <$term) {
  8. //        unlink($elem->getPathname());
  9.         echo $elem->getPathname() . PHP_EOL;
  10.       }
  11.     }
  12.   }
  13. }
  14.  
  15. $term = strtotime('-1 day');
  16. gc(new RecursiveDirectoryIterator('/tmp'), $term);
  17. ?>

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

PHP:
  1. <?php
  2. function gc($path, $term) {
  3.   $itr = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
  4.   foreach ($itr as $elem) {
  5.     if ($elem->isFile() && $elem->getMTime() <$term) {
  6. //        unlink($elem->getPathname());
  7.       echo $elem->getPathname() . PHP_EOL;
  8.     }
  9.   }
  10. }
  11.  
  12. $term = strtotime('-1 day');
  13. gc('/tmp', $term);
  14. ?>

うーん便利。

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

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

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

トラックバック:0

このエントリーのトラックバックURL
http://www.1x1.jp/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