Php Classmap关键字没有';t插入类

Php Classmap关键字没有';t插入类,php,composer-php,autoloader,Php,Composer Php,Autoloader,因此,在composer.json中,我得到了以下内容: "autoload": { "psr-0" : { "classmap": ["src/libraries/"] } }, 我得到了一个路径为~\src\libraries\ClassName.php的类,当我试图用新的ClassName()创建一个实例时;PHP给我一个错误,说明找不到类名。我还包括作曲家自动加载器。它让我发疯你的自动加载定义是错误的 您正在定义使用PSR

因此,在composer.json中,我得到了以下内容:

"autoload": {
        "psr-0" : {
            "classmap": ["src/libraries/"]
        }
    },

我得到了一个路径为
~\src\libraries\ClassName.php
的类,当我试图用新的ClassName()创建一个实例时;PHP给我一个错误,说明找不到类名。我还包括作曲家自动加载器。它让我发疯

你的自动加载定义是错误的

您正在定义使用PSR-0。您可以定义以前缀“classmap”(所有小写)开头的类位于目录“src/libraries”中

然后尝试使用类名“ClassName”。这个类不是以字母“classmap”开头的,所以它不会被这个PSR-0自动加载

如您所述,如果您有符合PSR-0的文件,即类名等于路径和文件名,这对于您的示例是正确的:

"autoload": {
    "psr-0" : {
        "ClassName": ["src/libraries/"]
    }
},
请注意,不再有“类映射”,因为这毫无意义。您使用位于该目录中的所有类所共有的部分类名作为前缀-这里是“ClassName”(请注意,这些大小写与原始类名中的大小写完全匹配,尽管PHP中的类名不区分大小写,但文件系统不区分大小写,并且PSR-0没有定义任何大小写转换,而是按字面意思使用名称)


如果可以使用PSR-0或PSR-4,则应尽量避免直接使用类映射。您可以始终优化Composer autoloader以将所有内容扩展到类映射中-类映射功能本身仅用于帮助处理不符合这两种标准的旧遗留代码。

谢谢,伙计。文档中没有阐明这一点太糟糕了.