0

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

在 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

到目前为止,我只发现文档中区分大小写的名称存在问题,所以我只切换到小写,但我得到了同样的错误。为什么?

[编辑]使用 PHP 5.3.3

4

1 回答 1

1

我发现了问题:默认包含目录将是完整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 快一点。

于 2013-06-11T13:57:44.153 回答