#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