要求文件夹中的所有文件
有一个简单的方法来要求文件夹中的所有文件?
没有一个简单的方法,你需要在PHP中实现它。 像这样的东西应该足够了:
foreach (scandir(dirname(__FILE__)) as $filename) { $path = dirname(__FILE__) . '/' . $filename; if (is_file($path)) { require $path; } }
大概只有这样做:
$files = glob($dir . '/*.php'); foreach ($files as $file) { require($file); }
使用opendir()
和readdir()
比glob()
更有效。
有没有简单的方法,如在Apache中,你可以只Include /path/to/dir
,所有的文件包括在内。
一种可能的方法是使用SPL中的RecursiveDirectoryIterator :
function includeDir($path) { $dir = new RecursiveDirectoryIterator($path); $iterator = new RecursiveIteratorIterator($dir); foreach ($iterator as $file) { $fname = $file->getFilename(); if (preg_match('%\.php$%', $fname)) { include($file->getPathname()); } } }
这将从$path
拉出所有的.php
结尾文件,不pipe它们在结构中有多深。
简单:
foreach(glob("path/to/my/dir/*.php") as $file){ require $file; }
使用foreach
循环。
foreach (glob("classes/*") as $filename) { require $filename; }
有关更多详细信息,请查看以前发布的问题 :
recursion地将所有文件列表和require_once放在一个目录中:
$files = array(); function require_once_dir($dir){ global $files; $item = glob($dir); foreach ($item as $filename) { if(is_dir($filename)) { require_once_dir($filename.'/'. "*"); }elseif(is_file($filename)){ $files[] = $filename; } } } $recursive_path = "path/to/dir"; require_once_dir($recursive_path. "/*"); for($f = 0; $f < count($files); $f++){ $file = $files[$f]; require_once($file); }
我的方式要求所有的兄弟姐妹:
<?php $files = glob(__DIR__ . '/*.php'); foreach ($files as $file) { // prevents including file itself if ($file != __FILE__) { require($file); } }
作为require_all()函数:
//require all php files from a folder function require_all ($path) { foreach (glob($path.'*.php') as $filename) require_once $filename; }