我有一个类似于
的文件夹结构base_dir-
Includes.php
Libs-
Database.php
Log.php
Cofing.php
Models-
someClass.php
Scheduled-
test.php
我的Includes.php
有
spl_autoload_register(NULL, FALSE);
spl_autoload_extensions('.php, .class.php, lib.php');
function libLoader($name) {
$file = 'Libs/' . $name . '.php';
if (!file_exists($file)) {
// throw new Exception("Error Loading Library: $file does not exists!", 1);
return FALSE;
}
require_once $file;
}
function modelLoader($name) {
$file = 'Models/' . $name . '.php';
if (!file_exists($file)) {
// throw new Exception("Error Loading Library: $file does not exists!", 1);
return FALSE;
}
require_once $file;
}
spl_autoload_register('libLoader');
spl_autoload_register('modelLoader');
我的someClass.php
有
require_once '../Includes.php';
class someClass extends Database
{
public function __construct() { return 'hello world'; }
}
test.php
已
require_once '../Includes.php';
try {
$loads = new someClass();
} catch (Exception $e) {
echo "Exception: " . $e->getMessage();
}
当我运行test.php
时,我发现找不到某些类... / Scheduled / test.php
spl是否适用于像someClass.php这样的扩展类,或者我是否需要包含要扩展的类?
为什么它找不到someClass.php
?
由于
答案 0 :(得分:0)
更改
$file = 'Models/' . $name . '.php';
到
$file = __DIR__ . '/Models/' . $name . '.php';
在您的模型自动加载器(以及libLoader中的等效文件)中,以确保它从正确的目录中搜索,而不是test.php文件所在的目录