Непорожній префікс 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.