Comment configurer des "répertoires" en utilisant un projet Symfony dans PhpStorm

J'utilise PhpStorm pour travailler sur un projet Symfony.

dans le Fichier > Paramètres > projet ... > répertoires configuration, j'ai défini le vendor/ répertoire comme un Resource root afin d'avoir auto-completion et comme un dossier exclu parce que je veux ignorer les vendeurs en effectuant une recherche dans le code de mon projet.

Mais mon problème est que les vendeurs sont toujours montré dans les résultats de recherche.

voici ma configuration actuelle:

enter image description here

Voici ce que j'essaie d'éviter: les résultats de vendor/ :

enter image description here

Voici la configuration de PHP:

enter image description here

je peux restreindre la recherche en sélectionnant Scope = Custom mais parfois j'oublie de changer cela. Je suis à la recherche de quelques paramètres que je peux utiliser dans mes différents projets Symfony2/3.

comment marquer le répertoire vendor/ pour permettre à PhpStorm de L'utiliser comme une racine de ressource et de l'ignorer lors d'une recherche?

et quelle est la configuration correcte pour la structure par défaut des répertoires d'un projet Symfony2? Voici les répertoires par défaut après une installation Symfony 2.8 avec composer create-project symfony/framework-standard-edition symfony-2.8 "~2.8" :

app/
  ├ config
  ├ cache
  ├ logs
  └ Resources
src/
  └ AppBundle/
vendor/
web/

Voici comment j'ai marqué les répertoires en ce moment:

.idea               [excluded]
app/
  ├ config
  ├ cache           [excluded]
  ├ logs            [excluded]
  └ Resources
src/                [source]
  └ AppBundle/
    └ Tests/        [test source folders]
vendor/             [excluded]
web/

Note: j'ai installé le plugin Symfony pour PhpStorm, Je ne sais pas si cela change le comportement IDE.

39
demandé sur A.L 2016-02-26 17:30:20

4 réponses

le dossier vendor n'est pas une racine de ressource. Une racine de ressource est un dossier où des ressources telles que des images et des scripts seront servies par le serveur web.

dans votre cas, le seul dossier qui devrait être marqué en tant que racine ressource est probablement le dossier web , mais ironiquement, est presque le seul que vous n'avez pas sélectionné en tant que racine ressource. Marquer web comme la racine de la ressource signifie que les URLs absolues /css/foo.css et /images/foo.jpg pourraient être des ressources valides servies par le serveur web; vous voulez probablement supprimer tous les autres dossiers des racines de ressources.

il est correct d'exclure le dossier vendor parce qu'il ne fait pas partie de votre code de projet de première partie. Pour que l'achèvement de code fonctionne pour le code de tiers, vous devez ajouter le dossier vendeur comme une bibliothèque externe. Cela peut être fait en accédant à Langues & Cadres > PHP dans les options et spécifiant le dossier vendeur comme chemin d'inclusion.

38
répondu Quolonel Questions 2016-02-28 17:20:15

après avoir utilisé les conseils de Quolonel Questions réponse , voici un résumé de ma configuration pour Symfony2 (voir Symfony3 à la fin de cette réponse):

pour l'auto-complétion, utilisez le répertoire vendor/ dans Include path :

enter image description here

afin d'éviter des résultats non pertinents lors de la recherche dans le les répertoires suivants doivent être ignorés:

.idea               [excluded]
app/
  ├ cache           [excluded]
  └ logs            [excluded]
vendor/             [excluded]

enter image description here

voici ma configuration complète:

.idea               [excluded]
app/
  ├ cache           [excluded]
  └ logs            [excluded]
src/                [source]
  └ AppBundle/
    └ */Tests/      [test source folders]
vendor/             [excluded]
web/                [resources root]

les dossiers sources de Test sont optionnels, s'ils sont définis, ils apparaîtront dans la barre d'outils:

enter image description here


avec la configuration par défaut pour Symfony3 , les répertoires sont légèrement différents:

.idea               [excluded]
src/                [source]
tests/              [test source folders]
var/
  ├ cache           [excluded]
  └ logs            [excluded]
vendor/             [excluded]
web/                [resources root]

mise à jour: après avoir mis à jour mes dépendances avec composer update , PhpStorm effectue des recherches dans le répertoire vendor/ , même si ces répertoires sont ignorés . La solution est de supprimer tous les répertoires vendor/* de Include path et ne conserve que le répertoire vendor/ , comme sur la première capture d'écran.

je vais devoir tester si marquer tous les répertoires vendor/* comme ignoré peut fonctionner et éviter de répéter ce après chaque fois composer update est utilisé.

21
répondu A.L 2017-05-23 12:26:36

une autre option qui est plus facile que d'exclure manuellement vendor et de l'inclure à nouveau dans les paramètres php, est de dire à PhpStorm composer.json et composer.phar dans les paramètres composer comme showin dans cette question .

2
répondu Yep_It's_Me 2016-07-14 01:31:59

J'utilise PhpStorm 10 comme principal IDE pour Symfony2. Vous n'avez pas besoin d'installer de plugins Symfony, car PhpStorm supporte Symfony2 par défaut.

  • vous devez marquer votre répertoire public_html comme une racine de Ressource, ou tout ce que vous avez qui va être public
  • Sources - votre app/ répertoire
  • si vous ne voulez pas vendors/ à la recherche, c'est ce que j'exclus Aussi, vous appuyez sur vendeur et bouton "exclu" sur le dessus. Vous voulez aussi exclure, tmp/ et app/cache/ répertoires
  • Comme vous le savez déjà, vous pouvez définir la portée et de la recherche.

quand vous excluez directory, cela aide aussi la performance puisque PhpStorm ne pas indexer et regarder des fichiers là, quelque chose que vous ne voulez pas de toute façon.

quant à la structure des répertoires de Symfony2, elle est assez flexible, j'utilise la mienne. Voici Symfony 2.8 répertoire structure de la documentation.

les dossiers exclus pour moi sont:

  • app/DoctrineMigrations
  • app/cache
  • app/logs/
  • tmp/
0
répondu Muhammed M. 2017-04-10 15:41:30