如何配置"目录"在PhpStorm中使用Symfony项目时

时间:2016-02-26 14:30:20

标签: php phpstorm symfony

我使用PhpStorm来处理Symfony项目。

文件>设置>项目...>目录配置,我将vendor/目录定义为资源根以便自动完成并作为 Excluded文件夹因为我想要在我的项目代码中执行搜索时忽略供应商。

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

这是我目前的配置:

enter image description here

以下是我要避免的内容:显示vendor/的结果:

enter image description here

以下是PHP配置:

enter image description here

我可以通过选择 Scope = Custom 来限制搜索,但有时我忘记更改此内容。我正在寻找一些我可以在不同的Symfony2 / 3项目中使用的设置。

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

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的行为。

4 个答案:

答案 0 :(得分:46)

vendor文件夹不是资源根目录。资源根是一个文件夹,其中Web服务器将提供图像和脚本等资源。

在您的情况下,唯一应标记为资源根目录的文件夹可能是web文件夹,但具有讽刺意味的是,几乎是唯一一个未选择作为资源根目录的文件夹。将web标记为资源根意味着绝对URL /css/foo.css/images/foo.jpg可以是Web服务器提供的有效资源;您可能希望从资源根目录中删除所有其他文件夹。

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

答案 1 :(得分:22)

在使用Quolonel Questions's answer的建议之后,这里是我对Symfony2的配置的摘要(请参阅本答案末尾的Symfony3):

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

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

使用default configuration for Symfony3,目录略有不同:

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

更新:在使用composer update更新我的依赖项后,PhpStorm会在vendor/目录中执行搜索,即使这些目录被忽略。解决方案是从包含路径中删除所有vendor/*目录,并仅保留vendor/目录,如第一个屏幕截图所示。

我必须测试是否将所有vendor/*目录标记为忽略可以工作,并避免在每次使用composer update后重复此操作。

答案 2 :(得分:3)

比手动排除vendor然后在php设置中再次包含它更容易的另一个选项是告诉PhpStorm关于作曲家设置中的composer.jsoncomposer.phar如{{ 3}}

答案 3 :(得分:-1)

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

  • 您应该将您的public_html目录标记为资源根目录,或者将您公开的任何内容标记为公开
  • 来源 - 您的app/目录
  • 如果你不想在搜索中vendors/,那也是我排除的,你按下供应商和顶部的“排除”按钮。您还想排除tmp/app/cache/目录
  • 如您所知,您可以定义范围并在那里搜索。

当你排除目录时,它也有助于提高性能,因为PhpStorm没有索引和查看那里的文件,这是你不想要的。

至于Symfony2的目录结构,它非常灵活,我使用自己的。以下是文档中的Symfony 2.8 directory结构。

我的排除文件夹是:

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