Подтвердить что ты не робот

Как настроить "Каталоги" при использовании проекта 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.

4b9b3361

Ответ 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/