Php 在多个递归DirectoryIterator上循环

Php 在多个递归DirectoryIterator上循环,php,iterator,Php,Iterator,我目前拥有以下PHP: $directoryIterator = new RecursiveDirectoryIterator( __DIR__ . '/tests/phpunit/' ); /** * @var SplFileInfo $fileInfo */ foreach ( new RecursiveIteratorIterator( $directoryIterator ) as $fileInfo ) { if ( substr( $fileInfo->getFi

我目前拥有以下PHP:

$directoryIterator = new RecursiveDirectoryIterator( __DIR__ . '/tests/phpunit/' );

/**
 * @var SplFileInfo $fileInfo
 */
foreach ( new RecursiveIteratorIterator( $directoryIterator ) as $fileInfo ) {
    if ( substr( $fileInfo->getFilename(), -8 ) === 'Test.php' ) {
        $files[] = $fileInfo->getPathname();
    }
}

这将创建一个数组,其中指向文件的路径以/tests/phpunit中的Test.php结尾。很好用。但是现在我还想在/tests/integration中注册一些东西。(在/tests中有更多的内容,所以我不能简单地浏览整个目录。)我可以复制代码,但那太差劲了。现在我想弄清楚如何在两个递归DirectoryIterator实例上循环。这是否可能以合理的方式实现?

要在迭代器上进行迭代,可以使用

$directoryIterator = new RecursiveDirectoryIterator( __DIR__ . '/tests/phpunit/' );
$directoryIterator1 = new RecursiveDirectoryIterator( __DIR__ . '/tests/integration/' );
$iterator = new AppendIterator();
$iterator->append(new RecursiveIteratorIterator( $directoryIterator ));
$iterator->append(new RecursiveIteratorIterator( $directoryIterator1 ));

/**
 * @var SplFileInfo $fileInfo
 */
foreach ($iterator as $fileInfo) {
    if ( substr( $fileInfo->getFilename(), -8 ) === 'Test.php' ) {
        $files[] = $fileInfo->getPathname();
    }
}