如何使用PHP在文件夹中递归地包含具有特定名称的所有文件?

如何使用PHP在文件夹中递归地包含具有特定名称的所有文件?,php,recursion,include,Php,Recursion,Include,假设我有一个名为parent 其中有许多子文件夹,如child1,child2等。 有些“子”文件夹中有一个名为module.php的文件。 如何递归检查父文件夹的所有子文件夹,并在应用程序中包含名为module.php的所有文件 我尝试了以下方法,但无法找出问题所在: if ( !function_exists( 'glob_recursive' ) ) { function glob_recursive( $pattern, $flags = 0 ) { $files = glo

假设我有一个名为
parent
其中有许多子文件夹,如
child1
child2
等。 有些“子”文件夹中有一个名为
module.php的文件。
如何递归检查父文件夹的所有子文件夹,并在应用程序中包含名为
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;
}

虽然包含所有文件听起来像是一种糟糕的设计,但也有可能:

$directory = new RecursiveDirectoryIterator('path/to/project/');
$recIterator = new RecursiveIteratorIterator($directory);
$regex = new RegexIterator($recIterator, '/\/module.php$/i');

foreach($regex as $item) {
    include $item->getPathname();
}
顺便说一句,这个例子是从一个。要使其正常工作,请确保该文件夹中的所有子文件夹都是PHP可读的。如果无法确保这一点,则必须为此编写自定义递归函数(但这不太可能)


同样,您所做的不是一个好的设计,并且会导致问题(比您想象的更早)。如果您遵循OOP风格,更好的方法是使用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();
}
顺便说一句,这个例子是从一个。要使其正常工作,请确保该文件夹中的所有子文件夹都是PHP可读的。如果无法确保这一点,则必须为此编写自定义递归函数(但这不太可能)


同样,您所做的不是一个好的设计,并且会导致问题(比您想象的更早)。如果您遵循OOP风格,更好的方法是使用PHP机制。

怎么样?@elclanrs AFAIK
glob
不递归工作哦,你说得对,我的错。迭代器应该在下面的问题中完成。我更新了上面的帖子,包括我所做的,包括一个glob_递归函数。然而,我似乎遗漏了一些东西……这就是我想在我负担得起的时候尽快摆脱php的原因。怎么样?@elclanrs AFAIK
glob
不能递归工作哦,你说得对,我的坏朋友。迭代器应该在下面的问题中完成。我更新了上面的帖子,包括我所做的,包括一个glob_递归函数。然而,我似乎遗漏了一些东西……这就是我想尽快摆脱php的原因。如果你看一看我的原始帖子,我会将其更新,以包含我正在尝试做的事情的示例。:)但我的例子应该能做到,不是吗?(已经测试过)如果你看一下我原来的帖子,我会将其更新为包含我正在尝试做的事情的样本但我的例子应该能做到,不是吗?(我们已经测试过了)