Symfony2捆绑:我使用它们吗?

时间:2012-04-05 08:37:18

标签: php symfony

我有一个在 Symfony2 中开发的应用程序。现在它的结构如下:

  • FrontBundle - 包括与应用程序视图和UI相关的所有内容。
  • PersistanceBundle - 包含与应用程序持久层相关的所有内容。
  • DomainBundle - 包括与应用程序实体和服务相关的所有内容。

这个结构好吗?或者像论坛功能一样使用捆绑包 - ForumBundle - 其中包括每一层(控制器服务域逻辑和与论坛相关的持久性

3 个答案:

答案 0 :(得分:17)

关于如何使用捆绑包构建应用程序没有严格的规则,但这是我在Symfony2上开发近一年后所得到的。

使用一个特定于应用程序的捆绑包。首先,我started包含多个捆绑包,例如CommonBundleUserBundleMainBundle,{{1事实证明最终并不那么方便,所以我切换到了一个特定于应用程序的软件包 - BlogBundle

您可以使用子名称空间整齐地组织代码。例如,后端控制器将转到ContactBundle子名称空间。

请注意,我正在讨论一个 app特定的捆绑包 - 这些内容对于具体的应用程序来说是独一无二的,并且在其他地方重用是没有意义的。您仍然可以为可重用的东西开发单独的包,并将它们放入供应商基础架构中。

保持非Symfony特定的东西不被捆绑。如果它们不是Symfony2特定的,则不需要为模型和捆绑中的Service Layer类创建捆绑包。有关详细信息,请参阅this question和我的回答。

答案 1 :(得分:5)

就像Elnur所说,使用一个AppBundle是一个很好的做法。

单个包本身实现了MVC模式,所以我认为使用bundle来分离你的层并不是一个好主意。

我认为使用捆绑包的最佳方式是思考“开源”。如果您正在开发的功能足够通用,可以为所有人发布,或者在将来的项目中重用,请将此功能放在一个包中。 这种方式将强制您构建功能,而不包含属于AppBundle的任何业务规则。

捆绑包是砖块

答案 2 :(得分:2)

有不同的方法来组织项目的应用程序结构。但是,如果您想要分发捆绑包并遵循symfony最佳实践,那么捆绑包比分离UI更多功能。有关在documentation中读取的包的更多信息。

我有两个具有以下结构的项目,我认为都是有效的:

  1. 为每个功能制作一个包:BlogBu​​ndle,StoreBundle等, 和包含一般内容的AppBundle。没有后端/前端 分离。在大多数情况下,后端是前端的SaaS。
  2. 一个用于前端的捆绑,一个用于后端。他们只共享实体 和域特定的东西。该应用程序有两个不同的目的。