我使用PhpStorm来处理Symfony项目。
在文件>设置>项目...>目录配置,我将vendor/
目录定义为资源根以便自动完成并作为 Excluded文件夹因为我想要在我的项目代码中执行搜索时忽略供应商。
但我的问题是供应商仍然显示在搜索结果中。
这是我目前的配置:
以下是我要避免的内容:显示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的行为。
答案 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/
目录:
为了避免在项目中搜索时出现不相关的结果,必须忽略以下目录:
.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/
目录中执行搜索,即使这些目录被忽略。解决方案是从包含路径中删除所有vendor/*
目录,并仅保留vendor/
目录,如第一个屏幕截图所示。
我必须测试是否将所有vendor/*
目录标记为忽略可以工作,并避免在每次使用composer update
后重复此操作。
答案 2 :(得分:3)
比手动排除vendor
然后在php设置中再次包含它更容易的另一个选项是告诉PhpStorm关于作曲家设置中的composer.json
和composer.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/