我的自动加载器出了什么问题?

时间:2013-08-05 04:43:14

标签: php require autoload spl spl-autoload-register

我正在尝试注册一些自动加载器,我得到一个HTTP 500.我的错误日志说明如下:

  

[05-Aug-2013 04:32:38 UTC] PHP致命错误:未捕获的异常   消息'Function'Autoloader :: config'的'LogicException'没有   可调用的(非静态方法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');



配置/ autoloader.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;
    }
}
}

1 个答案:

答案 0 :(得分:0)

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

include("config/autoloader.php");
$autoloader = new Autoloader();
spl_autoload_register(array($autoloader, 'loader'));