我希望include
项目中每个目录中的每个文件。我目前所拥有的是,我include
来自特定目录的每个文件
foreach (glob("*.php") as $filename)
{
include_once $filename;
}
但我也想为我拥有的每个目录和那里的所有文件做同样的事情。我听说过__autoload
函数,但有时我也需要非函数函数。
答案 0 :(得分:1)
递归是你的朋友。
/**
* @param string path to the root directory
*/
function include_files($dir) {
foreach (glob($dir . "/*") as $file) {
if(is_dir($file)){
include_files($file);
} else {
include_once($file);
}
}
}
答案 1 :(得分:1)
On this man page,第一个注释提供了一个递归列出所有文件的函数。只需根据您的需求进行调整:
<?php
function include_all_php_files($dir)
{
$root = scandir($dir);
foreach($root as $value)
{
if($value === '.' || $value === '..') {continue;}
if(is_file("$dir/$value") && preg_match('#\.php$#', $value))
{
include_once ("$dir/$value");
continue;
}
include_all_php_files("$dir/$value");
}
}
?>
答案 2 :(得分:0)
试试这个。这对我有用。
$accepted_extension = array("jpeg", "jpg", "gif", "bmp", "png");
$return = array();
$results = scandir($folder);
foreach ($results as $result) {
if ($result == '.' or $result == '..')
continue;
else if (is_dir($folder . '/' . $result))
continue;
else {
$extn = substr($result, strpos($result, ".") + 1);
if (in_array($extn, $accepted_extension)) {
$return[] = $result;
}
}
}