解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)

时间:2022-06-05 11:15:58
  1. <?php 
  2.  class RecursiveFileFilterIterator extends FilterIterator { 
  3.      // 满足条件的扩展名 
  4.      protected $ext = array('jpg','gif'); 
  5.  
  6.      /** 
  7.       * 提供 $path 并生成对应的目录迭代器 
  8.       */ 
  9.      public function __construct($path) { 
  10.          parent::__construct(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path))); 
  11.      } 
  12.  
  13.      /** 
  14.       * 检查文件扩展名是否满足条件 
  15.       */ 
  16.      public function accept() { 
  17.          $item = $this->getInnerIterator(); 
  18.          if ($item->isFile() &&  
  19.                  in_array(pathinfo($item->getFilename(), PATHINFO_EXTENSION), $this->ext)) { 
  20.              return TRUE; 
  21.          } 
  22.      } 
  23.  } 
  24.  
  25.  // 实例化 
  26.  foreach (new RecursiveFileFilterIterator('D:/history') as $item) { 
  27.      echo $item . PHP_EOL; 
  28.  }