Как настроить "Каталоги" при использовании проекта Symfony в PhpStorm
Я использую PhpStorm для работы над проектом Symfony.
В конфигурации "Файл" > "Настройки" > "Проект... > " я определил каталог vendor/
как корень ресурса, чтобы иметь автозаполнение и как папку "Исключено", потому что я хочу игнорировать поставщиков при выполнении поиска в моем код проекта.
Но моя проблема заключается в том, что поставщики все еще отображаются в результатах поиска.
Вот моя текущая конфигурация:
![enter image description here]()
Вот что я пытаюсь избежать: отображаются результаты из vendor/
:
![enter image description here]()
Вот конфигурация PHP:
![enter image description here]()
Я могу ограничить поиск, выбрав Scope = Custom, но иногда забываю изменить это. Я ищу некоторые настройки, которые я могу использовать в разных проектах Symfony2/3.
Как я должен пометить каталог vendor/
, чтобы позволить PhpStorm использовать его в качестве корня ресурса и игнорировать его при выполнении поиска?
И какова правильная конфигурация структуры каталогов по умолчанию проекта Symfony2? Ниже приведены каталоги по умолчанию после установки Symfony 2.8 с помощью composer create-project symfony/framework-standard-edition symfony-2.8 "~2.8"
:
app/
├ config
├ cache
├ logs
└ Resources
src/
└ AppBundle/
vendor/
web/
Вот как я обозначил каталоги в данный момент:
.idea [excluded]
app/
├ config
├ cache [excluded]
├ logs [excluded]
└ Resources
src/ [source]
└ AppBundle/
└ Tests/ [test source folders]
vendor/ [excluded]
web/
Примечание. Я установил плагин Symfony для PhpStorm, я не знаю, изменили ли это поведение IDE.
Ответы
Ответ 1
Папка vendor
не является корнем ресурса. Корень ресурса - это папка, в которой ресурсы, такие как изображения и сценарии, будут обслуживаться веб-сервером.
В вашем случае единственной папкой, которая должна быть помечена как корень ресурса, вероятно, является папка web
, но по иронии судьбы, это почти единственный, который вы не выбрали в качестве корня ресурса. Пометка web
в качестве корня ресурса означает, что абсолютные URL /css/foo.css
и /images/foo.jpg
могут быть действительными ресурсами, обслуживаемыми веб-сервером; вы, вероятно, захотите удалить все остальные папки из корней ресурсов.
Правильно исключить папку vendor
, потому что она не входит в ваш код проекта первой части. Для завершения кода для работы с сторонним кодом вы должны добавить папку поставщика как внешнюю библиотеку. Это можно сделать, перейдя к языкам и фреймворкам > PHP в параметрах и указав папку поставщика как путь включения.
Ответ 2
После использования советов из ответа Quolonel Questions, приведена сводка моей конфигурации для Symfony2 (см. Symfony3 в конце этого ответа):
Для автозаполнения используйте каталог vendor/
в пути Include:
![введите описание изображения здесь]()
Чтобы избежать нерелевантных результатов при поиске в проекте, следует игнорировать следующие каталоги:
.idea [excluded]
app/
├ cache [excluded]
└ logs [excluded]
vendor/ [excluded]
![введите описание изображения здесь]()
Вот моя полная конфигурация:
.idea [excluded]
app/
├ cache [excluded]
└ logs [excluded]
src/ [source]
└ AppBundle/
└ */Tests/ [test source folders]
vendor/ [excluded]
web/ [resources root]
Папки источника тестирования являются необязательными, если они определены, появится на панели инструментов:
![введите описание изображения здесь]()
При настройке по умолчанию для Symfony3 каталоги немного отличаются:
.idea [excluded]
src/ [source]
tests/ [test source folders]
var/
├ cache [excluded]
└ logs [excluded]
vendor/ [excluded]
web/ [resources root]
Обновление: после обновления моих зависимостей с помощью composer update
, PhpStorm выполняет поиск в каталоге vendor/
, даже если эти каталоги игнорируются. Решение состоит в том, чтобы удалить все каталоги vendor/*
из пути Include и сохранить только каталог vendor/
, как на первом снимке экрана.
Мне нужно будет проверить, может ли маркировка всех vendor/*
каталогов игнорировать, и не повторять это после каждого использования composer update
.
Ответ 3
Другой вариант, который проще, чем вручную исключить vendor
, а затем включить его снова в настройках php, - сообщить PhpStorm о composer.json
и composer.phar
в настройках композитора как showin в этот вопрос.
Ответ 4
Я использую PhpStorm 10 в качестве моей основной IDE для Symfony2. Вам не нужно устанавливать плагины Symfony, потому что PhpStorm по умолчанию поддерживает Symfony2.
- Ваш знак должен помечать каталог
public_html
в качестве корня ресурсов или что-то еще, что будет публично.
- Источники - ваш каталог
app/
- Если вы не хотите, чтобы
vendors/
в поиске, то, что я также исключаю, вы нажимаете на кнопку поставщика и "Исключено" сверху. Вы также хотите исключить каталоги tmp/
и app/cache/
- Как вы уже знаете, вы можете определить область и искать там.
Когда вы исключаете каталог, это также помогает производительности, поскольку PhpStorm не индексирует и не просматривает файлы там, чего вы не хотите.
Что касается структуры каталогов Symfony2, он довольно гибкий, я использую свой собственный. Вот структура Symfony 2.8 из документов.
Исключенные папки для меня:
-
app/DoctrineMigrations
-
app/cache
-
app/logs/
-
tmp/