0

我正在尝试注册一些自动加载器,但我得到了 HTTP 500。我的错误日志显示以下内容:

[2013 年 8 月 5 日 04:32:38 UTC] PHP 致命错误:未捕获的异常 'LogicException' 带有消息 '函数'Autoloader::config' 不可调用(非静态方法 Autoloader::config() 不应静态调用)' 在 /home2/canforce/public_html/index.php:5

错误日志的末尾有一些堆栈跟踪部分,但它以大字母显示,所以我把它拿出来,我认为这并不重要。

我认为我的自动加载器应该根据我读过的内容工作,但由于某种原因它没有,这里是代码:


index.php

include("config/autoloader.php");
spl_autoload_register('Autoloader::config');
spl_autoload_register('Autoloader::controller');
spl_autoload_register('Autoloader::service');



配置/自动加载器.php

class Autoloader {
function config($class) {
    $file = 'config/' . $class . '.php';
    if(file_exists($file)) {
        require_once $file;
    }
}
function controller($class) {
    $file = 'presentation/controllers/' . $class . '.php';
    if(file_exists($file)) {
        require_once $file;
    }
}
function service($class) {
    $file = 'model/services/' . $class . '.php';
    if(file_exists($file)) {
        require_once $file;
    }
}
}
4

1 回答 1

0

您需要创建Autoloader该类的一个实例,然后将其传递给 register 函数。

include("config/autoloader.php");
$autoloader = new Autoloader();
spl_autoload_register(array($autoloader, 'loader'));
于 2013-08-05T04:48:18.947 回答