我正在尝试自动加载不同文件夹中的类。那可能吗?
function __autoload($class){
require $class.'.php';
require 'libs/'.$class.'.php';
//this won't work.
}
我想自动加载 libs 文件夹或根目录中的类。有什么想法吗?非常感谢。
首先,我建议您查看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;
}
});