How can you optimize the provided PHP function for counting files in folders and subfolders?

The issue with the provided PHP function for counting files in folders and subfolders is that it uses recursion to traverse the directory structure, which can be inefficient for large directories with many subfolders and files. One way to optimize this function is to utilize PHP's built-in RecursiveDirectoryIterator and RecursiveIteratorIterator classes, which provide an easy way to iterate over files in a directory and its subdirectories.

function countFiles($dir){
    $fileCount = 0;
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
    
    foreach($iterator as $file){
        if($file->isFile()){
            $fileCount++;
        }
    }
    
    return $fileCount;
}

// Example usage
$directory = 'path/to/directory';
$fileCount = countFiles($directory);
echo "Total files in directory and subfolders: " . $fileCount;