繁体   English   中英

在名称空间目录结构后找不到spl_autoload类

[英]spl_autoload Class not found following namespaces directory structure

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

在main.php上:

namespace myproject;

spl_autoload_extensions(".php");
spl_autoload_register();

subspace\myclass::mystaticmethod();

在subspace / myclass.php上:

namespace myproject\subspace;

class myclass {

    static function mystaticmethod() {

        ....

    }

}

我收到此错误:

 PHP Fatal error:  Class 'myproject\\subspace\\myclass' not found

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

[编辑]使用PHP 5.3.3

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

我也找到了一个很好的解决方案。 来自http://www.php.net/manual/zh/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快一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM