非空的PSR-4前缀必须以名称空间分隔符结尾


89

我正在尝试使用Composer设置PSR-4,但我刚开始 A non-empty PSR-4 prefix must end with a namespace separator.

autoloadcomposer.json样子如下:

"autoload": {
    "psr-4": {
        "Acme\\models" : "app/models"
    }
},

app/models 是空的。

我究竟做错了什么?我怎样才能解决这个问题?

Answers:


172

有人发表了评论,但删除了它。他说我\\在年底失踪了Acme\\modelsAcme\\models\\将摆脱该消息并按预期工作。


6
是的,PSR-4需要末尾斜杠。(因为需要逃脱,所以翻倍)
Connor Tumbleson 2014年

3
我必须说这不仅是一个愚蠢的要求,而且规范也非常清楚地表明确实如此。因此,我之所以在这里出现一个非常基本的问题。
aross 2014年

18
使用此答案后,我还发现它composer validate也为您提供了正确的提示。
戴夫

使用存储库类型路径(相对的,符号链接的)时,这会引起问题,因为它似乎试图在此操作后立即以某种方式重新创建符号链接,并且已过时或缓存了composer.json
FantomX1

0

正如其他人所说 PSR-4 requires the trailing slash

虽然我不得不转换/\\Windows中(应该工作在Linux上精细):

    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.