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.