Как я могу рекурсивно включать все файлы с определенным именем в папку с помощью PHP?

Предположим, у меня есть папка с именем parent Там есть много подпапок, таких как child1 , child2 и т. Д. В некоторых из этих «дочерних» папок есть файл в имени module.php . Как я могу рекурсивно проверять все подпапки parent папки и включать все файлы с именем module.php в мое приложение?

Я попробовал ниже и не могу понять, что не так:

 if ( !function_exists( 'glob_recursive' ) ) { function glob_recursive( $pattern, $flags = 0 ) { $files = glob( $pattern, $flags ); foreach ( glob( dirname( $pattern ) . '/*', GLOB_ONLYDIR|GLOB_NOSORT ) as $dir ) { $files = array_merge( $files, glob_recursive( $dir . '/' . basename( $pattern ), $flags ) ); } return $files; } } foreach ( glob_recursive( locate_template('/lib/modules/*/module.php' ) as $module ) { require_once $module; } 

Solutions Collecting From Web of "Как я могу рекурсивно включать все файлы с определенным именем в папку с помощью PHP?"

Хотя это звучит как плохой дизайн для включения всех файлов, это возможно:

 $directory = new RecursiveDirectoryIterator('path/to/project/'); $recIterator = new RecursiveIteratorIterator($directory); $regex = new RegexIterator($recIterator, '/\/module.php$/i'); foreach($regex as $item) { include $item->getPathname(); } 

Btw, этот пример получен из комментария в руководстве PHP . Чтобы он работал, убедитесь, что все подпапки читаются PHP в этой папке. Если вы не можете сделать это уверенным, вам придется написать для него настраиваемую рекурсивную функцию (но это маловероятно).

Опять же, то, что вы делаете, не является хорошим дизайном и приведет к проблемам (раньше, чем вы могли бы подумать). Если вы придерживаетесь стиля ООП, лучше использовать механизм autload PHP.