在命名空间目录结构下找不到类


spl_autoload Class not found following namespaces directory structure

我试图在我的项目中使用类自动加载。这是我写的:

在main.php

:

namespace myproject;
spl_autoload_extensions(".php");
spl_autoload_register();
subspace'myclass::mystaticmethod();
在子空间/myclass.php:

namespace myproject'subspace;
class myclass {
    static function mystaticmethod() {
        ....
    }
}

我得到这个错误:

 PHP Fatal error:  Class 'myproject''subspace''myclass' not found
到目前为止,我只在文档中发现了大小写敏感名称的问题,所以我只切换到小写,但我得到了相同的错误。为什么?

[EDIT] Using PHP 5.3.3

我发现了问题:默认包含目录将是完整的namespace/subspace路径。

我也找到了一个好的解决方案。从http://www.php.net/manual/en/function.spl-autoload.php # 92767:

<?php
    // Add your class dir to include path
    set_include_path(get_include_path().PATH_SEPARATOR.'..');
    // Make autoloader look for commonly used "myclass.php" type filenames
    spl_autoload_extensions('.php');
    // Use default autoload implementation
    spl_autoload_register();
?>

默认的自动加载实现是用C编写的,并且总是比PHP快一些。