1<?php 2 3/** @file findfile.inc 4 * @ingroup Examples 5 * @brief class FindFile 6 * @author Marcus Boerger 7 * @date 2003 - 2005 8 * 9 * SPL - Standard PHP Library 10 */ 11 12if (!class_exists("FindFile", false)) require_once("findfile.inc"); 13if (!class_exists("AppendIterator", false)) require_once("appenditerator.inc"); 14 15/** @ingroup Examples 16 * @brief Base class to find files 17 * @author Marcus Boerger 18 * @version 1.1 19 * 20 */ 21class FindFile extends FilterIterator 22{ 23 /** @internal filename to find */ 24 private $file; 25 26 /** Construct from path and filename 27 * 28 * @param $path the directory to search in 29 * If path contains ';' then this parameter is split and every 30 * part of it is used as separate directory. 31 * @param $file the name of the files to search fro 32 */ 33 function __construct($path, $file) 34 { 35 $this->file = $file; 36 $list = split(PATH_SEPARATOR, $path); 37 if (count($list) <= 1) { 38 parent::__construct(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path))); 39 } else { 40 $it = new AppendIterator(); 41 foreach($list as $path) { 42 $it->append(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path))); 43 } 44 parent::__construct($it); 45 } 46 } 47 48 /** @return whether the current file matches the given filename 49 */ 50 function accept() 51 { 52 return !strcmp($this->current(), $this->file); 53 } 54 55 /** @return the filename to search for. 56 * @note This may be overloaded and contain a regular expression for an 57 * extended class that uses regular expressions to search. 58 */ 59 function getSearch() 60 { 61 return $this->file; 62 } 63} 64 65?>