所以在composer.json中我得到了以下内容:
"autoload": {
"psr-0" : {
"classmap": ["src/libraries/"]
}
},
我得到了一个路径~\src\libraries\ClassName.php
的类,当我尝试用新的ClassName()创建一个实例时; PHP给出了一个错误,指出找不到类ClassName。我已经包含了Composer自动加载器。它让我发疯了
答案 0 :(得分:1)
您的自动加载定义错误。
您正在定义使用PSR-0。您可以定义以前缀" classmap"开头的类。 (全部小写)位于" src / libraries"。
目录中然后你尝试使用类名" ClassName"。这个类不是以字母" classmap"开头的,所以它不会被这个PSR-0自动加载加载。
如果你有文件,如你所说,符合PSR-0,即类名等于路径和文件名,这对你的例子来说是正确的:
"autoload": {
"psr-0" : {
"ClassName": ["src/libraries/"]
}
},
请注意,没有" classmap"再也没有,因为这没有任何意义。您使用位于该目录中的所有类共有的类名称部分作为前缀 - 这里是" ClassName" (请注意,这些情况与原始类名中的情况完全匹配,即使类名在PHP中不区分大小写 - 但文件系统不是,并且PSR-0没有定义任何案例杂耍,它按字面意思取名)。 p>
如果可以使用PSR-0或PSR-4,则应尽量避免直接使用类映射。您始终可以优化Composer自动加载器以将所有内容扩展为类图 - 类映射功能本身仅用于帮助处理不符合任何标准的旧遗留代码。