คำนำหน้า PSR-4 ที่ไม่ว่างเปล่าต้องลงท้ายด้วยตัวคั่นเนมสเปซ


91

ฉันพยายามตั้งค่า PSR-4 ด้วย Composer แต่ฉันเพิ่งได้รับ A non-empty PSR-4 prefix must end with a namespace separator.

ของautoloadฉันcomposer.jsonมีลักษณะดังนี้:

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

app/models มันว่างเปล่า.

ผมทำอะไรผิดหรือเปล่า? ฉันจะแก้ไขปัญหานี้ได้อย่างไร?

คำตอบ:


176

มีคนแสดงความคิดเห็น แต่ลบออก เขาบอกผมที่ขาดหายไปในตอนท้ายของ\\ จะกำจัดข้อความและทำงานตามที่ควรAcme\\modelsAcme\\models\\


6
ใช่PSR-4ต้องใช้เครื่องหมายทับ (เป็นสองเท่าเนื่องจากจำเป็นต้องหลบหนี)
Connor Tumbleson

3
ฉันต้องบอกว่านี่ไม่ใช่แค่ข้อกำหนดโง่ ๆ เท่านั้น แต่ข้อมูลจำเพาะยังทำให้ชัดเจนอย่างยิ่งว่าเป็นเช่นนั้น ดังนั้นเหตุผลที่ฉันปรากฏที่นี่สำหรับปัญหาพื้นฐาน
aross

18
หลังจากใช้คำตอบนี้ฉันยังพบว่าcomposer validateยังช่วยให้คุณทราบได้อย่างดีว่ามีอะไรผิดปกติ
dave

สาเหตุนี้เกิดปัญหาเมื่อใช้พา ธ ประเภทที่เก็บสัมพันธ์เชื่อมโยงกันเนื่องจากดูเหมือนว่าจะพยายามสร้าง symlink ขึ้นมาใหม่หลังจากการดำเนินการนี้และมีผู้เรียบเรียงที่ล้าสมัยหรือแคช
json

0

อย่างที่คนอื่นบอก PSR-4 requires the trailing slash

แม้ว่าฉันจะต้องแปลง/เป็น\\ใน Windows (ควรใช้งานได้ดีบน Linux):

    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.