根据Symfony 3项目的best practices,应该有:
app/config/
,存储为任何环境定义的所有配置;app/Resources/
,存储应用程序的所有模板和翻译文件;src/AppBundle/
,存储Symfony特定代码(控制器和路由),域代码(例如Doctrine类)和所有业务逻辑;var/
...tests/AppBundle/
,存储应用程序的自动测试(例如单元测试)。vendor/
,这是Composer安装应用程序依赖项的目录,您永远不应修改其任何内容;web/
,存储所有前端控制器文件和所有Web资源,例如样式表,JavaScript文件和图像。
bin
,var
,vendor
和web
目录的目的很明显,但我想知道,为什么要分开app
,{ {1}}和src
。
据我了解,tests
包含构成应用程序的bundle。因此我希望它们位于src
目录中。此外,app
目录完全神秘,因为它应该在捆绑包中 - tests
。另一方面,为什么模板(src/AppBundle/Tests
)在AppBundle之外?
我发现了一些关于在应用程序之间共享bundle的注意事项,但由于我们有Composer,因此这些Bundle位于app/Resource/
目录中,并且它们具有单独的存储库。但是,我知道在应用程序中拥有多个bundle而不需要额外的基础结构可能很有用,但vendor
完全是误导性的名称。
那么,这个目录结构背后的动机是什么?或者它只是历史遗产?
除非有充分理由不这样做,否则我想删除src
和tests/AppBundle
等重复目录,因为它们也在app/Resources
中。
答案 0 :(得分:2)
因此,感谢评论中提供的链接,看起来app/Resources
和tests/
目录只是历史遗产。由于Symfony中的所有内容都是捆绑包,因此这些目录也在AppBundle中,因此我可以删除重复项。 app/
只是为了引导AppBundle并包含不适合任何包的东西。
答案 1 :(得分:1)
像Bootstrap这样的资产最好使用web /
http://symfony.com/doc/master/best_practices/web-assets.html
将您的资源存储在网络/目录中。