Un prefisso PSR-4 non vuoto deve terminare con un separatore dello spazio dei nomi


89

Sto provando a configurare la PSR-4 con Composer ma sto solo ottenendo A non-empty PSR-4 prefix must end with a namespace separator.

Il autoloadmio composer.jsonsembra così:

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

app/models è vuoto.

Che cosa sto facendo di sbagliato? Come posso risolvere questo problema?

Risposte:


173

Qualcuno ha fatto un commento ma lo ha rimosso. Ha detto che ero scomparso \\alla fine del Acme\\models. Acme\\models\\eliminerà il messaggio e funzionerà come dovrebbe.


6
Sì, PSR-4richiede la barra finale. (ben il doppio visto che deve essere evaso)
Connor Tumbleson

3
Devo dire che questo non è solo un requisito stupido, le specifiche rendono anche estremamente chiaro che questo è il caso. Da qui il motivo per cui mi presento qui per un problema molto semplice.
arriverà il

18
Dopo aver usato questa risposta, ho anche scoperto che composer validateti dà anche una buona indicazione di cosa c'è che non va.
dave

questo causa problemi quando si utilizza il tipo di repository path, relativo, symlinked, poiché sembra che cerchi in qualche modo di ricreare il collegamento simbolico subito dopo questa operazione e ha composer.json obsoleto o memorizzato nella cache
FantomX1

0

Come altri hanno detto PSR-4 requires the trailing slash

Anche se ho dovuto convertire /a \\in Windows (dovrebbe funzionare bene su Linux):

    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.