如何在PhpStorm中使用Symfony项目时配置“目录”
我使用PhpStorm来处理Symfony项目。如何在PhpStorm中使用Symfony项目时配置“目录”
在文件>设置>项目...>目录配置,我才能有自动完成规定的vendor/
目录作为资源根并作为排除的文件夹因为我想忽略供应商时,在我的项目代码中执行搜索。
但我的问题是供应商仍然显示在搜索结果中。
这里是我当前的配置:
这里是我试图避免的情况:从vendor/
结果显示:
这里是PHP配置:
我可以通过选择限制搜索范围=自定义但有时我忘记更改此设置。我正在寻找一些可以在我的不同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/
这是我如何标记在这一刻目录:
.idea [excluded]
app/
├ config
├ cache [excluded]
├ logs [excluded]
└ Resources
src/ [source]
└ AppBundle/
└ Tests/ [test source folders]
vendor/ [excluded]
web/
注:我安装的Symfony插件PhpStorm,我不不知道这是否会改变IDE的行为。
vendor
文件夹不是资源根目录。资源根目录是一个文件夹,资源(如图像和脚本)将由Web服务器提供。
在你的情况下,唯一应该标记为资源根目录的文件夹可能是web
文件夹,但具有讽刺意味的是,它几乎是你唯一没有被选作资源根目录的文件夹。将web
标记为资源根意味着绝对URL /css/foo.css
和/images/foo.jpg
可以是网络服务器提供的有效资源;您可能想要从资源根中删除所有其他文件夹。
排除vendor
文件夹是正确的,因为它不是第一方项目代码的一部分。为了使代码完成适用于第三方代码,您必须将供应商文件夹添加为外部库。这可以通过导航到语言&框架>PHP在选项中并将供应商文件夹指定为包含路径。
单击“[F4]”触发某些内容的上下文是什么?它对我没有帮助。你可以请复制我的问题中显示的树离子你的答案,并添加相关的*标记*?它可能对其他用户有用。 –
如果没有显示另一个模式对话框,任何编辑器上下文都可以使用。但是,不同的用户可能有不同的键绑定,因此指定键盘快捷键可能没有用处,所以我将删除它。我不会将你的ascii图表复制到我的答案中,因为我认为这不会带来任何明确性;文字足够清晰。 –
为了获得最佳的性能和配置,请使用Symfony插件,https://github.com/Haehnchen/idea-php-symfony2-plugin –
我使用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/
从Quolonel Questions's answer有使用意见后,这里是我的配置作一个总结Symfony2(参见Symfon Y3在这个答案的末尾):
对于自动完成,使用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
以后每次重复这一点。
另一种选择,比手动排除vendor
,然后再包括在PHP的设置更容易,是在作曲家的设置有关composer.json
和composer.phar
告诉PhpStorm为this question舒。
虽然它仍自动将所有供应商路径添加为包含我们需要的路径,但Composer插件在使用远程解释器时会发出警告。 –
我在赏金邮件中犯了一个错误,它应该是*不同的目录***。 –