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.