Awalan PSR-4 yang tidak kosong harus diakhiri dengan pemisah namespace

90

Saya mencoba mengatur PSR-4 dengan Komposer tetapi saya baru saja mendapatkannya A non-empty PSR-4 prefix must end with a namespace separator.

Saya autoloaddalam composer.jsonpenampilan saya seperti ini:

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

app/models kosong.

Apa yang saya lakukan salah? Bagaimana cara memperbaikinya?

Marwelln
sumber

Jawaban:

174

Seseorang memberi komentar tetapi menghapusnya. Dia menyebutkan bahwa saya hilang \\di akhir Acme\\models. Acme\\models\\akan menghilangkan pesan dan bekerja sebagaimana mestinya.

Marwelln
sumber
6
Ya, PSR-4membutuhkan garis miring. (baik ganda karena perlu melarikan diri)
Connor Tumbleson
3
Saya harus mengatakan ini bukan hanya persyaratan yang bodoh, spesifikasi juga membuatnya sangat jelas bahwa ini masalahnya. Oleh karena itu alasan saya muncul di sini untuk masalah yang sangat mendasar.
aross
18
Setelah menggunakan jawaban ini, saya juga menemukan bahwa itu composer validatejuga memberi Anda indikasi yang baik tentang apa yang salah.
Dave
ini menyebabkan masalah saat menggunakan jalur tipe repositori, relative, symlink, karena tampaknya mencoba untuk membuat ulang symlink setelah operasi ini dan memiliki composer.json yang sudah usang atau cache
FantomX1
0

Seperti yang dikatakan orang lain PSR-4 requires the trailing slash

Meskipun saya harus mengonversi /ke \\di Windows (seharusnya berfungsi dengan baik di Linux):

    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
Tikar
sumber