Symfony2捆绑包/应用程序结构(前端/后端)

Symfony2捆绑包/应用程序结构(前端/后端),symfony,architecture,controller,bundle,structure,Symfony,Architecture,Controller,Bundle,Structure,我已经阅读了很多关于捆绑包和Symfony2项目架构的不同内容,但是我还没有就单个项目的最佳实践得出结论,该项目不涉及重复使用捆绑包等。原因是这是一个特定于客户的项目 该应用程序是一个具有不同部分的大型网站,如新闻、博客、多步骤申请表、联系人、推荐信等。每个部分都需要后端和前端功能,例如,管理员可以在后端添加新闻文章,也可以在前端查看新闻文章。后端将包含一些仅后端的功能,例如管理用户,并且将有一个管理日志,该日志将记录每个管理用户的活动,因此需要在每个后端部分中访问该日志 在我很快意识到有很多共

我已经阅读了很多关于捆绑包和Symfony2项目架构的不同内容,但是我还没有就单个项目的最佳实践得出结论,该项目不涉及重复使用捆绑包等。原因是这是一个特定于客户的项目

该应用程序是一个具有不同部分的大型网站,如新闻、博客、多步骤申请表、联系人、推荐信等。每个部分都需要后端和前端功能,例如,管理员可以在后端添加新闻文章,也可以在前端查看新闻文章。后端将包含一些仅后端的功能,例如管理用户,并且将有一个管理日志,该日志将记录每个管理用户的活动,因此需要在每个后端部分中访问该日志

在我很快意识到有很多共享的布局/模板和功能(如AdminLog)之前,我最初考虑为每个部分提供不同的捆绑包,如AdminUserBundle、NewsBUndle、BlogBundle等。因此,您认为这类项目的最佳实践是什么?我想我有三个选择,但可以接受其他建议:

  • 1个捆绑包,用于控制器、视图、测试等中的所有后端和前端目录
  • 3个捆绑包-CoreBundle、FrontendBundle和BackendBundle,其中CoreBundle将包含所有共享功能,如实体、AdminLog等
  • 控制器、视图、测试等中具有前端和后端目录的每个部分的捆绑包,即新闻捆绑包将包含新闻实体,并将包含前端和后端控制器、视图和测试。BlogBundle将包含Blog实体、前端和后端控制器、视图、测试等

  • 谢谢

    根据Symfony2文档:

    在Symfony2中,bundle类似于插件,只是应用程序中的所有代码都位于bundle中。bundle只不过是一个目录,其中包含与特定功能相关的所有内容,包括PHP类、配置,甚至样式表和Javascript文件(请参阅bundle系统)

    捆绑包应该解决业务/功能问题。因此,我认为第三个建议是一个很好的解决办法

    您可以使用包含技术问题的CoreBundle,如全局表单类型、表单主题、自定义原则函数。此捆绑包不包含业务问题

    其他捆绑包应该只包含业务问题,比如新闻捆绑包、博客捆绑包和评论捆绑包

    希望对你有帮助


    最好的考虑

    因为重用不是问题,所以我选择选项1。如果事情变得太难处理,你总是可以把它拆开。谢谢。我认为这样做会让它有点不整洁,因为你可以在一个文件夹中有很多很多控制器/视图等。如果我们对每个功能都有单独的捆绑包,那么就更容易导航并找到您正在处理的特定部分的代码。谢谢。我想我会用这个方法。不!不是“但捆绑包是指可以作为独立软件重复使用的东西。如果UserBundle不能在其他Symfony应用程序中“按原样”使用,那么它就不应该是自己的捆绑包。此外,如果InvoiceBundle依赖于ProductBundle,那么拥有两个单独的捆绑包没有任何好处。”-最佳实践:仅为应用程序逻辑创建一个名为AppBundle的捆绑包。