我刚刚开始使用PHP自动加载。我实际上认为我已经掌握了基础知识,但不知怎的,它仍然不起作用。
我有以下目录结构:
myLib
-bootstrap.php
-sven
-project
project.php
bootstrap.php
是将包含以使用lib的文件。在这个文件中,我只需要以下代码:
spl_autoload_extensions('.php');
spl_autoload_register();
$var = new \sven\project\project();
$var->init();
在project.php
:
namespace sven\project;
class project {
public function init() {
echo 'It works!';
}
}
自动加载器的使用方式,据我所知,核心PHP自动加载器应该将命名空间转换为目录,然后查找包含该类的php。
不会显示“It works!”,而是抛出致命错误。不幸的是,我无法确切地说出该错误是什么,因为CMS只通知我发生了致命错误 但是有了这么简单的结构,我确信错误是非常基本的,很容易找到知道它如何工作的人。
我在这个例子中出错了 - 我是否正确描述了自动加载器在此设置中应该如何工作还是存在误解?
编辑:最后运行了错误日志:
Fatal error: Class undefined: sven\\project\\project\\project\\project in /xxx/bootstrap.php on line 36
这显然看起来不对,但如何改变呢?为什么有两个反斜杠?
答案 0 :(得分:0)
spl_autoload_extensions('.php');
spl_autoload_register();
此代码仅适用于PHP 5.3及更高版本。
答案 1 :(得分:0)