Tiền tố PSR-4 không trống phải kết thúc bằng dấu phân tách vùng tên


89

Tôi đang cố gắng thiết lập PSR-4 bằng Composer nhưng tôi chỉ nhận được A non-empty PSR-4 prefix must end with a namespace separator.

Của tôi autoloadtrong tôi composer.jsontrông như thế này:

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

app/models trống rỗng.

Tôi đang làm gì sai? Làm thế nào tôi có thể sửa lỗi này?

Câu trả lời:


173

Ai đó đã đưa ra bình luận nhưng đã gỡ bỏ nó. Anh ấy đề cập đến tôi đã mất tích \\vào cuối Acme\\models. Acme\\models\\sẽ loại bỏ thông báo và hoạt động như bình thường.


6
Có, PSR-4yêu cầu dấu gạch chéo ở cuối. (cũng tăng gấp đôi kể từ khi nó cần phải được thoát)
Connor Tumbleson

3
Tôi phải nói rằng đây không chỉ là một yêu cầu ngu ngốc, thông số kỹ thuật cũng làm cho nó cực kỳ rõ ràng rằng đây là trường hợp. Do đó, lý do tôi trình bày ở đây cho một vấn đề rất cơ bản.
toàn bộ

18
Sau khi sử dụng câu trả lời này, tôi cũng thấy rằng điều đó composer validatecũng cung cấp cho bạn một dấu hiệu tốt về điều gì sai.
dave

nguyên nhân này các vấn đề khi sử dụng đường loại kho lưu trữ, tương đối, symlinked, vì nó có vẻ như nó cố gắng liên kết tượng trưng nào đó tái tạo ngay sau khi hoạt động này và có composer.json lỗi thời hoặc lưu trữ
FantomX1

0

Như những người khác đã nói PSR-4 requires the trailing slash

Mặc dù tôi đã phải chuyển đổi /sang \\trong Windows (sẽ hoạt động tốt trên Linux):

    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.