我正在尝试自动加载位于不同文件夹中的类。这可能吗?
function __autoload($class){
require $class.'.php';
require 'libs/'.$class.'.php';
//this won't work.
}
我想自动加载libs文件夹或root文件夹中的类。有什么想法吗?非常感谢。
答案 0 :(得分:3)
首先,我建议你研究一下spl_autoload_register
,这样做会更好。
其次,您应该使用is_file
来测试文件是否存在,然后尝试加载它。如果require
文件不存在,则脚本将暂停。
spl_autoload_register(function($class) {
if (is_file($class . '.php')) {
require $class . '.php';
} elseif (is_file('libs/' . $class . '.php')) {
require 'libs/' . $class . '.php';
}
});
如果文件可能有多个文件夹,则可以执行以下操作:
spl_autoload_register(function($class) {
$folders = array ('.', 'libs', 'somewhere');
foreach ($folders as $folder) {
if (is_file($folder . '/' . $class . '.php')) {
require $folder . '/' . $class . '.php';
}
if (class_exists($class)) break;
}
});