DEV Community

Benjamin Delespierre
Benjamin Delespierre

Posted on • Edited on

How to list files recursively in a directory with PHP iterators

This snippet is so useful to write custom commands that checks my code.

Code

function filesIn(string $path): \Generator { if (! is_dir($path)) { throw new \RuntimeException("{$path} is not a directory "); } $it = new \RecursiveDirectoryIterator($path); $it = new \RecursiveIteratorIterator($it); $it = new \RegexIterator($it, '/\.php$/', \RegexIterator::MATCH); yield from $it; } 
Enter fullscreen mode Exit fullscreen mode

Usage

foreach (filesIn('app/') as $file) { $contents = file_get_contents($file->getPathname()); } 
Enter fullscreen mode Exit fullscreen mode

Want the list as an array?

$files = iterator_to_array(filesIn('app/')); 
Enter fullscreen mode Exit fullscreen mode

Don't forget to leave a like!

Top comments (0)