在 PhpStorm 中使用 Symfony 项目时如何配置 "Directories"
How to configure "Directories" when using a Symfony project in PhpStorm
我使用 PhpStorm 处理 Symfony 项目。
在 File > Settings > Project … > Directories 配置中,我将 vendor/
目录定义为 Resource root为了自动完成并作为排除文件夹,因为我想在我的项目代码中执行搜索时忽略供应商。
但我的问题是供应商仍然显示在搜索结果中。
这是我当前的配置:
这是我试图避免的:显示 vendor/
的结果:
这里是 PHP 配置:
我可以通过选择 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 行为。
vendor
文件夹不是资源根目录。资源根目录是一个文件夹,网络服务器将从中提供图像和脚本等资源。
在您的情况下,唯一应标记为资源根目录的文件夹可能是 web
文件夹,但具有讽刺意味的是,它几乎是您没有选择为资源根目录的唯一文件夹。将 web
标记为资源根意味着绝对 URL /css/foo.css
和 /images/foo.jpg
可以是 Web 服务器提供的有效资源;您可能想从资源根目录中删除所有其他文件夹。
排除 vendor
文件夹是正确的,因为它不是您的第一方项目代码的一部分。为了使代码完成适用于第三方代码,您必须将供应商文件夹添加为外部库。这可以通过在选项中导航到 Languages & Frameworks > PHP 并将供应商文件夹指定为包含路径来完成。
我使用 PhpStorm 10 作为 Symfony2 的主要 IDE。您不需要安装任何 Symfony 插件,因为 PhpStorm 默认支持 Symfony2。
- 您应该将您的
public_html
目录标记为资源根目录,或者您拥有的任何内容将成为 public
- 来源 - 您的
app/
目录
- 如果您不想
vendors/
在搜索中,那也是我排除的,您按供应商和顶部的 "Excluded" 按钮。您还想排除 tmp/
和 app/cache/
目录
- 如您所知,您可以定义范围并在那里进行搜索。
当您排除目录时,它也有助于提高性能,因为 PhpStorm 不会索引和监视那里的文件,这是您无论如何都不想要的。
Symfony2的目录结构比较灵活,我用的是自己的。这是文档中的 Symfony 2.8 directory 结构。
我排除的文件夹是:
app/DoctrineMigrations
app/cache
app/logs/
tmp/
在使用了 的建议后,这里是我对 Symfony2 的配置总结(请参阅本答案末尾的 Symfony3):
对于自动完成,使用 中的 vendor/
目录包含路径 :
为了避免在项目中搜索时出现不相关的结果,必须忽略以下目录:
.idea [excluded]
app/
├ cache [excluded]
└ logs [excluded]
vendor/ [excluded]
这是我的完整配置:
.idea [excluded]
app/
├ cache [excluded]
└ logs [excluded]
src/ [source]
└ AppBundle/
└ */Tests/ [test source folders]
vendor/ [excluded]
web/ [resources root]
测试源文件夹 是可选的,如果它们被定义将出现在工具栏中:
与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/
目录中执行搜索,即使这些目录被 忽略 。解决方案是从 Include path 中删除所有 vendor/*
目录,只保留 vendor/
目录,如第一个屏幕截图所示。
我将不得不测试将所有 vendor/*
目录标记为 忽略 是否可行,并避免在每次使用 composer update
后重复此操作.
另一个比手动排除 vendor
然后在 php 设置中再次包含它更容易的选项是在 composer 中告诉 PhpStorm 关于 composer.json
和 composer.phar
设置如 .
所示
我使用 PhpStorm 处理 Symfony 项目。
在 File > Settings > Project … > Directories 配置中,我将 vendor/
目录定义为 Resource root为了自动完成并作为排除文件夹,因为我想在我的项目代码中执行搜索时忽略供应商。
但我的问题是供应商仍然显示在搜索结果中。
这是我当前的配置:
这是我试图避免的:显示 vendor/
的结果:
这里是 PHP 配置:
我可以通过选择 Scope = Custom 来限制搜索,但有时我忘记更改它。我正在寻找一些可以在我的不同 Symfony2/3 项目中使用的设置。
我应该如何标记 vendor/
目录以允许 PhpStorm 将其用作资源根目录并在执行搜索时忽略它?
Symfony2 项目的默认目录结构的正确配置是什么?以下是使用 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
标记为资源根意味着绝对 URL /css/foo.css
和 /images/foo.jpg
可以是 Web 服务器提供的有效资源;您可能想从资源根目录中删除所有其他文件夹。
排除 vendor
文件夹是正确的,因为它不是您的第一方项目代码的一部分。为了使代码完成适用于第三方代码,您必须将供应商文件夹添加为外部库。这可以通过在选项中导航到 Languages & Frameworks > PHP 并将供应商文件夹指定为包含路径来完成。
我使用 PhpStorm 10 作为 Symfony2 的主要 IDE。您不需要安装任何 Symfony 插件,因为 PhpStorm 默认支持 Symfony2。
- 您应该将您的
public_html
目录标记为资源根目录,或者您拥有的任何内容将成为 public - 来源 - 您的
app/
目录 - 如果您不想
vendors/
在搜索中,那也是我排除的,您按供应商和顶部的 "Excluded" 按钮。您还想排除tmp/
和app/cache/
目录 - 如您所知,您可以定义范围并在那里进行搜索。
当您排除目录时,它也有助于提高性能,因为 PhpStorm 不会索引和监视那里的文件,这是您无论如何都不想要的。
Symfony2的目录结构比较灵活,我用的是自己的。这是文档中的 Symfony 2.8 directory 结构。
我排除的文件夹是:
app/DoctrineMigrations
app/cache
app/logs/
tmp/
在使用了
对于自动完成,使用 中的 vendor/
目录包含路径 :
为了避免在项目中搜索时出现不相关的结果,必须忽略以下目录:
.idea [excluded]
app/
├ cache [excluded]
└ logs [excluded]
vendor/ [excluded]
这是我的完整配置:
.idea [excluded]
app/
├ cache [excluded]
└ logs [excluded]
src/ [source]
└ AppBundle/
└ */Tests/ [test source folders]
vendor/ [excluded]
web/ [resources root]
测试源文件夹 是可选的,如果它们被定义将出现在工具栏中:
与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/
目录中执行搜索,即使这些目录被 忽略 。解决方案是从 Include path 中删除所有 vendor/*
目录,只保留 vendor/
目录,如第一个屏幕截图所示。
我将不得不测试将所有 vendor/*
目录标记为 忽略 是否可行,并避免在每次使用 composer update
后重复此操作.
另一个比手动排除 vendor
然后在 php 设置中再次包含它更容易的选项是在 composer 中告诉 PhpStorm 关于 composer.json
和 composer.phar
设置如