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?

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.


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/"
        }
    },
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.