Un préfixe PSR-4 non vide doit se terminer par un séparateur d'espace de noms

90

J'essaye de configurer PSR-4 avec Composer mais je reçois juste A non-empty PSR-4 prefix must end with a namespace separator.

Mon autoloaddans mon composer.jsonressemble à ceci:

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

app/models est vide.

Qu'est-ce que je fais mal? Comment puis-je réparer cela?

Marwelln
la source

Réponses:

174

Quelqu'un a fait un commentaire mais l'a supprimé. Il a mentionné que j'avais disparu \\à la fin de Acme\\models. Acme\\models\\se débarrassera du message et fonctionnera comme il se doit.

Marwelln
la source
6
Oui, PSR-4nécessite la barre oblique finale. (bien doublé puisqu'il faut s'échapper)
Connor Tumbleson
3
Je dois dire que ce n'est pas seulement une exigence stupide, la spécification indique également très clairement que c'est le cas. D'où la raison pour laquelle je me présente ici pour un problème très basique.
aross
18
Après avoir utilisé cette réponse, j'ai également constaté que cela composer validatevous donne également une bonne indication de ce qui ne va pas.
dave
cela cause des problèmes lors de l'utilisation de chemin de type référentiel, relatif, lié symboliquement, car il semble qu'il tente de recréer un lien symbolique juste après cette opération et qu'il est obsolète ou mis en cache composer.json
FantomX1
0

Comme d'autres l'ont dit PSR-4 requires the trailing slash

Bien que je devais convertir /à \\Windows (devrait fonctionner correctement sous Linux):

    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
M à
la source