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?

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.


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/"
        }
    },
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.