web-dev-qa-db-ja.com

PhpStormでSymfonyプロジェクトを使用するときに「ディレクトリ」を設定する方法

私はPhpStormを使用してSymfonyプロジェクトに取り組んでいます。

File> Settings> Project…> Directories構成で、vendor/ディレクトリをResource rootとして定義しましたプロジェクトのコードで検索を実行する際にベンダーを無視したいので、オートコンプリートとExcludedフォルダーとして注文します。

しかし、私の問題は、ベンダーがまだ検索結果に表示されることです。

現在の構成は次のとおりです。

enter image description here

回避しようとしているものは次のとおりです。vendor/の結果が表示されます。

enter image description here

PHP設定:

enter image description here

Scope = Customを選択して検索を制限できますが、これを変更するのを忘れることがあります。さまざまなSymfony2/3プロジェクトで使用できる設定を探しています。

PhpStormがそれをリソースルートとして使用し、検索の実行時にそれを無視できるようにするには、どのようにvendor/ディレクトリをマークする必要がありますか?

また、Symfony2プロジェクトのデフォルトのディレクトリ構造の正しい構成は何ですか? composer create-project symfony/framework-standard-edition symfony-2.8 "~2.8"を使用してSymfony 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/

注:PhpStorm用のSymfonyプラグインをインストールしましたが、これがIDE動作を変更するかどうかわかりません。

45
A.L

vendorフォルダーはリソースルートではありません。リソースルートは、画像やスクリプトなどのリソースがWebサーバーから提供されるフォルダーです。

あなたの場合、リソースルートとしてマークする必要がある唯一のフォルダーはおそらくwebフォルダーですが、皮肉なことに、リソースルートとして選択していないのはほとんど唯一のフォルダーです。 webをリソースルートとしてマークすると、絶対URL /css/foo.cssおよび/images/foo.jpgは、Webサーバーが提供する有効なリソースです。リソースルートから他のすべてのフォルダーを削除することをお勧めします。

vendorフォルダーは、ファーストパーティのプロジェクトコードの一部ではないため、除外するのが正しいです。サードパーティのコードでコード補完を機能させるには、ベンダーライブラリを外部ライブラリとして追加する必要があります。これを行うには、オプションでLanguages&Frameworks> [〜#〜] php [〜#〜]に移動し、ベンダーフォルダーをインクルードパスとして指定します。

48

Quolonel Questionsの回答 からのアドバイスを使用した後、Symfony2の構成の概要を次に示します(この回答の最後にあるSymfony3を参照)。

自動補完を行うには、Include pathvendor/ディレクトリを使用します。

enter image description here

プロジェクトで検索する際に無関係な結果を避けるために、次のディレクトリを無視する必要があります。

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

enter image description here

完全な構成を次に示します。

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

テストソースフォルダはオプションです。定義されている場合、ツールバーに表示されます:

enter image description here


Symfony3のデフォルト設定 では、ディレクトリがわずかに異なります:

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

更新:依存関係をcomposer updateで更新した後、PhpStormは、これらのディレクトリがignoredであっても、vendor/ディレクトリで検索を実行します。解決策は、最初のスクリーンショットのように、Include pathからすべてのvendor/*ディレクトリを削除し、vendor/ディレクトリのみを保持することです。

すべてのvendor/*ディレクトリをignoredとしてマークできるかどうかをテストし、composer updateが使用されるたびにこれを繰り返さないようにする必要があります。

22
A.L

手動でvendorを除外してからphp設定に再度含めるよりも簡単な別のオプションは、PhpStormにcomposer.jsonおよびcomposer.phar composer この質問 のshowinとしての設定。

3
Yep_It's_Me