Symfony项目结构 - 为什么src /和app /?

时间:2017-01-20 10:36:32

标签: symfony

根据Symfony 3项目的best practices,应该有:

  
      
  • app/config/,存储为任何环境定义的所有配置;
  •   
  • app/Resources/,存储应用程序的所有模板和翻译文件;
  •   
  • src/AppBundle/,存储Symfony特定代码(控制器和路由),域代码(例如Doctrine类)和所有业务逻辑;
  •   
  • var/ ...
  •   
  • tests/AppBundle/,存储应用程序的自动测试(例如单元测试)。
  •   
  • vendor/,这是Composer安装应用程序依赖项的目录,您永远不应修改其任何内容;
  •   
  • web/,存储所有前端控制器文件和所有Web资源,例如样式表,JavaScript文件和图像。
  •   

binvarvendorweb目录的目的很明显,但我想知道,为什么要分开app,{ {1}}和src

据我了解,tests包含构成应用程序的bundle。因此我希望它们位于src目录中。此外,app目录完全神秘,因为它应该在捆绑包中 - tests。另一方面,为什么模板(src/AppBundle/Tests)在AppBundle之外?

我发现了一些关于在应用程序之间共享bundle的注意事项,但由于我们有Composer,因此这些Bundle位于app/Resource/目录中,并且它们具有单独的存储库。但是,我知道在应用程序中拥有多个bundle而不需要额外的基础结构可能很有用,但vendor完全是误导性的名称。

那么,这个目录结构背后的动机是什么?或者它只是历史遗产?

除非有充分理由不这样做,否则我想删除srctests/AppBundle等重复目录,因为它们也在app/Resources中。

2 个答案:

答案 0 :(得分:2)

因此,感谢评论中提供的链接,看起来app/Resourcestests/目录只是历史遗产。由于Symfony中的所有内容都是捆绑包,因此这些目录也在AppBundle中,因此我可以删除重复项。 app/只是为了引导AppBundle并包含不适合任何包的东西。

答案 1 :(得分:1)

像Bootstrap这样的资产最好使用web /

http://symfony.com/doc/master/best_practices/web-assets.html

将您的资源存储在网络/目录中。