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

A.L*_*A.L 45 php symfony phpstorm

我使用PhpStorm来处理Symfony项目.

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

但我的问题是供应商仍然出现在搜索结果中.

这是我目前的配置:

在此输入图像描述

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

在此输入图像描述

这是PHP配置:

在此输入图像描述

我可以通过选择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/
Run Code Online (Sandbox Code Playgroud)

这是我在这个时刻标记目录的方式:

.idea               [excluded]
app/
  ? config
  ? cache           [excluded]
  ? logs            [excluded]
  ? Resources
src/                [source]
  ? AppBundle/
    ? Tests/        [test source folders]
vendor/             [excluded]
web/
Run Code Online (Sandbox Code Playgroud)

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

Quo*_*ons 48

vendor文件夹不是资源根目录.资源根是一个文件夹,其中Web服务器将提供诸如图像和脚本之类的资源.

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

排除该vendor文件夹是正确的,因为它不是您的第一方项目代码的一部分.为了使代码完成能够用于第三方代码,您必须将vendor文件夹添加为外部库.这可以通过在选项中导航到Languages&Frameworks > PHP并将vendor文件夹指定为包含路径来完成.

  • “不排除供应商文件夹”和“将其排除在“语言和框架 > PHP 包含路径”中”之间有什么区别。文字研究有结果吗? (2认同)

A.L*_*A.L 22

在使用了Quolonel Questions的答案之后,这里是我对Symfony2的配置的总结(请参阅本答案末尾的Symfony3):

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

在此输入图像描述

为了避免在项目中搜索时出现不相关的结果,必须忽略以下目录:

.idea               [excluded]
app/
  ? cache           [excluded]
  ? logs            [excluded]
vendor/             [excluded]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这是我的完整配置:

.idea               [excluded]
app/
  ? cache           [excluded]
  ? logs            [excluded]
src/                [source]
  ? AppBundle/
    ? */Tests/      [test source folders]
vendor/             [excluded]
web/                [resources root]
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述


使用Symfony3默认配置,目录略有不同:

.idea               [excluded]
src/                [source]
tests/              [test source folders]
var/
  ? cache           [excluded]
  ? logs            [excluded]
vendor/             [excluded]
web/                [resources root]
Run Code Online (Sandbox Code Playgroud)

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

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