spl autoloading:找不到类 - 命名空间问题?

时间:2014-10-12 21:21:16

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

我刚刚开始使用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

这显然看起来不对,但如何改变呢?为什么有两个反斜杠?

2 个答案:

答案 0 :(得分:0)

spl_autoload_extensions('.php');
spl_autoload_register();

此代码仅适用于PHP 5.3及更高版本。

答案 1 :(得分:0)

斯文,

我刚刚回答了有关spl_autoload的另一个问题,请尝试我的示例click here

我希望它有所帮助!

PS: 也不要只是自动加载你路径上的所有.php文件,这可能很危险!