我想循环主目录中的所有子目录,例如,我保留所有类,
core/
model/
page/
class_1.php
class_2.php
menu/
class_3.php
and so on...
所以这是我的自动加载函数,我将它放在 init.php 中,
function autoload_multiple_directory($class_name){
// List all the class directories in the array.
$array_directories = array(
'core/controller/',
'core/model/',
'core/helper/'
);
// When you use namespace in a class, you get something like this when you auto load that class \foo\tidy.
// So use explode to split the string and then get the last item in the exloded array.
$parts = explode('\\', $class_name);
//print_r($parts);
// Set the class file name.
$file_name = strtolower(end($parts)).'.php';
// $file_name = 'class_'.strtolower($class_name).'.php';
// Loop the array.
foreach($array_directories as $path_directory){
$recursive_directory = new RecursiveDirectoryIterator($path_directory);
foreach (new RecursiveIteratorIterator($recursive_directory) as $filename => $file) {
if(file_exists(WEBSITE_DOCROOT.$file->getPath().'/'.$file_name)){
include WEBSITE_DOCROOT.$file->getPath().'/'.$file_name;
}
}
/* no problem with this, but I cannot loop the sub dirs...
if(file_exists(WEBSITE_DOCROOT.$path_directory.$file_name)){
include WEBSITE_DOCROOT.$path_directory.$file_name;
}
*
*/
}
}
spl_autoload_register('autoload_multiple_directory');
但随后我收到此错误消息,
致命错误:无法在第 6 行的 C:\wamp\www\xxx\core\helper\Common.php 中重新声明类 Common
我的项目中只有一Common
门课。为什么说不止一次或重新声明?
但是,如果您查看if(file_exists(WEBSITE_DOCROOT.$path_directory.$file_name))
我注释掉的内容-加载类没有问题。这个初始循环的问题是它不会循环主目录中的子目录,例如,core/model/
任何想法为什么以及我应该怎么做才能循环主目录的子目录?
编辑:
问题来自RecursiveDirectoryIterator
- 它循环目录并列出所有文件。但我想要的只是子目录。