我只是被 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
这显然看起来不对,但如何改变呢?为什么有两个反斜杠?