在PhpStorm中使用Symfony项目时如何configuration“目录”

我使用PhpStorm来处理Symfony项目。

文件>设置>项目…>目录configuration中,我将vendor/目录定义为资源根目录 ,以便自动完成,并将其作为排除文件夹,因为我想在项目代码中执行search时忽略供应商。

但是我的问题是供应商仍然显示在search结果中。

这是我目前的configuration:

在这里输入图像说明

这是我试图避免:显示vendor/的结果:

在这里输入图像说明

这里是PHPconfiguration:

在这里输入图像说明

我可以通过select范围=自定义限制search,但有时我忘了改变这一点。 我正在寻找一些我可以在我的不同Symfony2 / 3项目中使用的设置。

我应该如何标记vendor/目录,以便允许PhpStorm将其用作资源根目录,并在执行search时忽略它?

什么是Symfony2项目的默认目录结构的正确configuration? 下面是使用composer create-project symfony/framework-standard-edition symfony-2.8 "~2.8" 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/ 

注:我安装了PhpStorm的Symfony插件,我不知道这是否改变了IDE的行为。

vendor文件夹不是资源根。 资源根目录是Web服务器将从其提供资源(如图像和脚本)的文件夹。

在你的情况下,应该被标记为资源根目录的唯一文件夹可能是web文件夹,但具有讽刺意味的是,它几乎是你没有被选作资源根目录的唯一文件夹。 将web标记为资源根意味着绝对URL / /css/foo.csshttp://img.dovov.comfoo.jpg可以是Web服务器提供的有效资源; 您可能要从资源根中删除所有其他文件夹。

排除vendor文件夹是正确的,因为它不是第一方项目代码的一部分。 为了使代码完成适用于第三方代码,您必须将供应商文件夹添加为外部库。 这可以通过在选项中导航到语言和框架 > PHP并将供应商文件夹指定为包含path来完成。

在使用了Quolonel Questions的答案之后 ,下面是我对Symfony2的configuration的总结(参见本答案的末尾的Symfony3):

要自动完成,请使用包含path中vendor/目录:

在这里输入图像说明

为了避免在项目中search不相关的结果,必须忽略以下目录:

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

在这里输入图像说明

这是我的完整configuration:

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

testing源文件夹是可选的,如果它们被定义,将出现在工具栏中:

在这里输入图像说明


使用Symfony3的默认configuration ,这些目录稍有不同:

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

更新:使用composer update更新我的依赖关系后,PhpStorm在vendor/目录中执行search,即使这些目录被忽略 。 解决方法是从Includepath中删除所有vendor/*目录,并只保留vendor/目录,就像第一个屏幕截图一样。

我将不得不testing,如果标记所有vendor/*目录被忽略可以工作,并避免每次使用composer update后重复这一点。

另一个比手工排除vendor更容易的选项,然后在php设置中再次包含它,就是在composer php设置中告诉PhpStorm关于composer.jsoncomposer.phar的问题 。

我使用PhpStorm 10作为Symfony2的主要IDE。 您不需要安装任何Symfony插件,因为默认情况下PhpStorm支持Symfony2。

  • 你应该把你的public_html目录标记为Resource Root,或者你将要公开的任何东西
  • 来源 – 您的app/目录
  • 如果您不希望vendors/search,这也是我排除的,你按供应商和顶部的“排除”button。 你也想排除, tmp/app/cache/目录
  • 如你所知,你可以定义范围并在那里search。

当你排除目录,它也有助于性能,因为PhpStorm不索引和在那里观看文件,你不想要的东西。

至于Symfony2的目录结构,非常灵活,我用我自己的。 这里是来自文档的Symfony 2.8目录结构。

排除的文件夹对我来说是:

  • app/DoctrineMigrations
  • app/cache
  • app/logs/
  • tmp/