How can RecursiveDirectoryIterator be used to ignore specific folders during scanning in PHP?

RecursiveDirectoryIterator can be used to ignore specific folders during scanning in PHP by creating a custom RecursiveFilterIterator that excludes the specified folders. By extending RecursiveFilterIterator and implementing the accept method to filter out the unwanted folders, we can customize the behavior of RecursiveDirectoryIterator to skip those folders during traversal.

class CustomRecursiveFilterIterator extends RecursiveFilterIterator {
    private $ignoredFolders = ['folder1', 'folder2'];

    public function accept() {
        // Skip folders that are in the ignoredFolders array
        return !in_array($this->current()->getFilename(), $this->ignoredFolders);
    }
}

$directory = new RecursiveDirectoryIterator('/path/to/directory');
$filteredIterator = new CustomRecursiveFilterIterator($directory);
$iterator = new RecursiveIteratorIterator($filteredIterator, RecursiveIteratorIterator::SELF_FIRST);

foreach ($iterator as $file) {
    echo $file->getPathname() . PHP_EOL;
}