【发布时间】:2013-08-05 04:43:14
【问题描述】:
我正在尝试注册一些自动加载器,但我收到了 HTTP 500。我的错误日志显示如下:
[05-Aug-2013 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');
config/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;
}
}
}
【问题讨论】:
-
错误消息告诉您解决问题所需的一切。您正在静态调用非静态函数。
-
@Maerlyn 你是对的,如果我读得更仔细一点就好了。经过一整天的编码,所有这些 txt 和大词让我有点不知所措:/ 这很有意义并且有效,但奇怪的是,我阅读的所有文档都没有显示您必须实例化它。
标签: php require autoload spl spl-autoload-register