Непорожній префікс PSR-4 повинен закінчуватися роздільником простору імен


90

Я намагаюся налаштувати 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 пусто.

Що я роблю не так? Як я можу це виправити?

Відповіді:


174

Хтось зробив коментар, але видалив його. Він згадав, що я зник безвісти \\наприкінці Acme\\models. Acme\\models\\позбудеться повідомлення і працюватиме як слід.


6
Так, PSR-4потрібна кінцева коса риса. (добре вдвічі, оскільки його потрібно врятувати)
Коннор Тамблсон,

3
Потрібно сказати, що це не лише дурна вимога, специфікація також чітко дає зрозуміти, що це саме так. Звідси причина, за якою я з'являюся тут для дуже базового питання.
aross

18
Після використання цієї відповіді я також виявив, що це composer validateтакож дає вам добру інформацію про те, що не так.
Дейв

це спричиняє проблеми при використанні шляху типу сховища, відносного, символічного посилання, оскільки, здається, він намагається якимось чином відтворити символічне посилання відразу після цієї операції та застарілий або кешований composer.json
FantomX1

0

Як казали інші PSR-4 requires the trailing slash

Хоча мені довелося перетворити /на \\в Windows (має добре працювати в Linux):

    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.