的目录。
我有一个看起来像
的文件夹结构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
时,我在.../计划/test.php
SPL是否可以与Someclass.php这样的扩展类工作,还是我需要包括要出版的类?
为什么它不会找到someClass.php
?
谢谢
更改
$file = 'Models/' . $name . '.php';
to
$file = __DIR__ . '/Models/' . $name . '.php';
在您的型号中,自动加载器(以及Libloader中的等效物)以确保其从正确的目录进行搜索,而不是test.php文件位于