Моя задача - создать дерево каталогов, в котором необходимо фильтровать некоторые файлы каталогов. Я думаю, что это хорошая идея - создать карту, в которой я могу указать для каждого каталога, применять ли фильтрацию.
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;
}
Пожалуйста, помогитесделать проверку целевого элемента карты на каждой итерации. Или, если это плохая идея, каков альтернативный путь?