Php 基于映射数组创建目录树

Php 基于映射数组创建目录树,php,iterator,Php,Iterator,我的任务是创建一个目录树,其中一些目录文件需要过滤。 我认为创建一个映射是一个好主意,我可以为每个目录指定是否应用过滤 protected $templatesMap = array( 'config' => true, 'html' => [ 'pages' => false, 'header' => true, 'index' => false, 'main' => true,

我的任务是创建一个目录树,其中一些目录文件需要过滤。 我认为创建一个映射是一个好主意,我可以为每个目录指定是否应用过滤

protected $templatesMap = array(
    'config' => true,
    'html' => [
        'pages' => false,
        'header' => true,
        'index' => false,
        'main' => true,
        'product' => true,
        'reviews' => false,
    ],
    'html_mobile' => [
        'banner' => true,
        'pages' => false
    ]
);
这是我的密码:

protected function getDirectoriesTree()
{
    $templateTree = array();
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('design/theme_dir_name/'), RecursiveIteratorIterator::CHILD_FIRST);
    /** @var RecursiveDirectoryIterator $fileInfo */
    foreach ($iterator as $fileInfo) {
        $path = $fileInfo->isDir() ? array($fileInfo->getFilename() => array()) : array($fileInfo->getFilename());
        for ($depth = $iterator->getDepth() - 1; $depth >= 0; $depth--) {
            $dirName = $iterator->getSubIterator($depth)->current()->getFilename();
            if (!in_array($dirName, ['.', '..'])) {
                /**
                 * 
                 * My problem is here! 
                 * I do not know, how to check that if file must be filtered or not, 
                 * based on $this->templatesMap.
                 * 
                 */
                $path = [$dirName => $path];
            }
        }
        $templateTree = array_merge_recursive($templateTree, $path);
    }
    return $templateTree;
}
请帮助我在每次迭代中检查映射的目标项。或者,如果这是一个坏主意,什么是替代方法