【发布时间】:2014-12-07 10:25:59
【问题描述】:
我刚刚开始使用 PHP 自动加载。我实际上认为我已经掌握了基础知识,但不知何故它仍然无法正常工作。
我得到了以下目录结构:
myLib
-bootstrap.php
-sven
-project
project.php
bootstrap.php 是包含使用该库的文件。在这个文件中,我只有以下代码:
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
这显然看起来不对,但是如何改变呢?为什么有两个反斜杠?
【问题讨论】:
标签: php autoload spl-autoload-register spl-autoloader