<?php declare(strict_types=1); function getFiles($directory, $targetExtension): generator { $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS ; #TODO: Prevent preloading of symlinks. Otherwise it keeps loading instead of not # going into. #TODO: Prevent going into .git/ by browsing "manually" instead of RecursiveIteratorIterator $dir = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory, $flags)); foreach ($dir as $fileinfo) { $filename = $fileinfo->getFilename(); $filePathname = $fileinfo->getPathname(); $extension = $fileinfo->getExtension(); if ($targetExtension == $extension) { yield $filePathname; } } }