Ouzo\Utilities\Files::getFilesRecursivelyWithSpecifiedExtension PHP Method

getFilesRecursivelyWithSpecifiedExtension() public static method

Returns all files from the given directory that have the given extension.
public static getFilesRecursivelyWithSpecifiedExtension ( string $dir, string $extension ) : array
$dir string
$extension string
return array
    public static function getFilesRecursivelyWithSpecifiedExtension($dir, $extension)
    {
        $directory = new RecursiveDirectoryIterator($dir);
        $iterator = new RecursiveIteratorIterator($directory);
        $filter = new RegexIterator($iterator, "/\\.{$extension}\$/i", RecursiveRegexIterator::GET_MATCH);
        return array_keys(iterator_to_array($filter));
    }

Usage Example

示例#1
0
 /**
  * @test
  */
 public function shouldGetFilesRecursivelyByExtension()
 {
     //given
     $dirPath = Path::joinWithTemp('test', 'tests_find_files', 'new_dir', 'second_new_dir');
     mkdir($dirPath, 0777, true);
     $file1 = Path::joinWithTemp('test', 'tests_find_files', 'file1a.phtml');
     touch($file1);
     $file2 = Path::joinWithTemp('test', 'tests_find_files', 'new_dir', 'file2a.phtml');
     touch($file2);
     $file3 = Path::joinWithTemp('test', 'tests_find_files', 'new_dir', 'second_new_dir', 'file3a.phtml');
     touch($file3);
     //when
     $files = Files::getFilesRecursivelyWithSpecifiedExtension(Path::joinWithTemp('test', 'tests_find_files'), 'phtml');
     //then
     DeleteDirectory::recursive($dirPath);
     Assert::thatArray($files)->hasSize(3)->contains($file1, $file2, $file3);
 }