在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.css
和http://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.json
和composer.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/