Предложения по исправлению пространства имен PhpStorm PSR-4 для поставщика

#php #symfony #namespaces #phpstorm

Вопрос:

Я создаю библиотеки поставщиков компании, но у меня проблемы с пространствами имен. Обычно я игнорирую это, но сейчас хочу исправить проблемы.

Я тестирую сейчас пример поставщика SymfonyBundleFrameworkBundle , но у этого есть те же ошибки.

введите описание изображения здесь

Когда я создаю новый файл, я предложил

введите описание изображения здесь

Как я могу настроить PhpStorm так, чтобы он предлагал правильное пространство имен?

Возможно, от поставщика composer.json? Оно имеет:

   "autoload": {
        "psr-4": { "Symfony\Bundle\FrameworkBundle\": "" },
 

Ответ №1:

Если у вас есть пользовательские классы, вам необходимо настроить пространства имен PSR4 в файле composer.json. Вы не должны создавать свои классы непосредственно в каталоге поставщика, так как он может быть переопределен при обновлении зависимостей.

Например, если у вас есть пользовательские классы в ядре пространства имен src/ with :

 "autoload": {
    "psr-4": { "Kernel\": "src/" }
}
 

Комментарии:

1. Это был пример, я создаю файлы в своих поставщиках, решение, которое Вы предоставляете для работы. Но это утомительно — для каждого моего вердора я должен добавлять «репозитории»: [ { «тип»: «vcs», «url»: «git@bitbucket.org:… затем «загрузка»: { «psr-4»: { «Мой\Комплект\Тестовый пакет\»: «поставщик/Мой/… } } Я не понимаю, почему мы не можем использовать composer.json в пакете (разрешить добавление loc), в конце концов, в этом файле есть эта запись

2. Если вы используете пользовательских поставщиков, вам не нужно добавлять конфигурацию psr4 для каждого поставщика, потому что у каждого из ваших поставщиков есть свой файл composer.json с конфигурацией psr4, тогда composer автоматически загрузит его

3. Да, это правильно, но PhpStorm не использует этот composer.json — показывает его как ошибку пространства имен, и когда я создаю его, предлагайте неправильное пространство имен. Можно ли указать PhpStorm использовать пространство имен поставщика composer.json ?

4. Мой PhpStorm автоматически делает это без каких-либо настроек. Но вы можете заглянуть в настройки, затем выполнить поиск composer, вы найдете поле для пути к composer.json, если PhpStorm не обнаружит его автоматически, возможно, это сможет решить вашу проблему

Ответ №2:

Попробуйте снять пометку vendor с папки как Source Root