Um prefixo PSR-4 não vazio deve terminar com um separador de namespace

91

Estou tentando configurar o PSR-4 com o Composer, mas estou começando A non-empty PSR-4 prefix must end with a namespace separator.

Meu autoloadno meu composer.jsonfica assim:

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

app/models está vazia.

O que estou fazendo errado? Como posso consertar isso?

Marwelln
fonte

Respostas:

177

Alguém fez um comentário, mas o removeu. Ele mencionou que eu estava faltando \\no final de Acme\\models. Acme\\models\\eliminará a mensagem e funcionará como deveria.

Marwelln
fonte
6
Sim, PSR-4requer a barra final. (bem, o dobro, já que precisa ser escapado)
Connor Tumbleson
3
Devo dizer que este não é apenas um requisito estúpido, a especificação também deixa extremamente claro que este é o caso. Daí a razão pela qual apareço aqui para um problema muito básico.
aross
18
Depois de usar essa resposta, também descobri que ela composer validatetambém dá uma boa indicação do que está errado.
Dave
isso causa problemas ao usar o tipo de repositório path, relative, symlinked, pois parece que tenta recriar de alguma forma o symlink logo após esta operação e tem composer.json obsoleto ou armazenado em cache
FantomX1
0

Como outros disseram PSR-4 requires the trailing slash

Embora eu tivesse que converter /para \\no Windows (deve funcionar bem no Linux):

    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
M em
fonte