【发布时间】:2013-11-09 15:27:02
【问题描述】:
我想include 我项目中每个目录中的每个文件。我目前拥有的是,我 include 来自特定目录的每个文件
foreach (glob("*.php") as $filename)
{
include_once $filename;
}
但我也想对我拥有的每个目录以及其中的所有文件执行相同的操作。我听说过 __autoload 函数,但有时我也需要它用于非类函数。
【问题讨论】:
我想include 我项目中每个目录中的每个文件。我目前拥有的是,我 include 来自特定目录的每个文件
foreach (glob("*.php") as $filename)
{
include_once $filename;
}
但我也想对我拥有的每个目录以及其中的所有文件执行相同的操作。我听说过 __autoload 函数,但有时我也需要它用于非类函数。
【问题讨论】:
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");
}
}
?>
【讨论】:
递归是你的朋友。
/**
* @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);
}
}
}
【讨论】:
include_files
试试这个。这对我有用。
$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;
}
}
}
【讨论】: