DEV Community

Benjamin Delespierre
Benjamin Delespierre

Posted on • Edited on

3

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!

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay