How to list files recursively in a directory with PHP iterators
Benjamin Delespierre

Benjamin Delespierre @bdelespierre

About: I do all sorts of mischiefs with Laravel

Location:
Paris, France
Joined:
Sep 16, 2017

How to list files recursively in a directory with PHP iterators

Publish Date: Jul 31 '20
9 0

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!

Comments 0 total

    Add comment