0

我想要include项目中每个目录中的每个文件。我目前拥有的是,我include每个文件都来自特定目录

foreach (glob("*.php") as $filename)
{
    include_once $filename;
}

但我也想对我拥有的每个目录以及其中的所有文件执行相同的操作。我听说过这个__autoload函数,但有时我也需要它用于非类函数。

4

3 回答 3

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);
        }
    }
}
于 2013-11-09T15:32:23.770 回答
1

在这个手册页上,第一条注释给出了一个递归列出所有文件的函数。只需调整它以满足您的需求:

<?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");
    }
}
?>
于 2013-11-09T15:34:40.037 回答
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;
        }
    }
}
于 2013-11-09T15:33:36.500 回答