11

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

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

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

4

3 回答 3

17

关于如何使用 bundle 构建应用程序没有硬性规定,但这是我在 Symfony2 上开发近一年后得出的结论。

使用一个特定于应用程序的捆绑包。起初,我多个捆绑包开始,例如CommonBundle, UserBundle, MainBundle, BlogBundle,ContactBundle等。最终证明不是那么方便,所以我只切换到一个特定于应用程序的捆绑包 - AppBundle.

您可以使用子命名空间整齐地组织您的代码。例如,后端控制器将转到AppBundle\Controller\Backend子命名空间。

请注意,我说的是一个特定于应用程序的捆绑包——这些东西是具体应用程序所独有的,在其他地方重复使用是没有意义的。您仍然可以为可重用的东西开发单独的捆绑包,并将它们放入供应商的基础设施中。

将非 Symfony 特定的东西放在包之外。如果模型和服务层类不是 Symfony2 特定的,则不需要在包中包含模型和服务层类。有关详细信息,请参阅此问题和我的答案。

于 2012-04-05T09:01:43.380 回答
5

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

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

我认为使用捆绑软件的最佳方式是考虑“开源”。如果您正在开发的功能足够通用,可以为每个人发布,或者可以在未来的项目中重用,请将此功能放在一个捆绑包中。这种方式将迫使您在没有属于 AppBundle 的任何业务规则的情况下构建功能。

捆绑是砖块

于 2013-08-30T11:49:27.270 回答
2

有多种方法可以为您的项目组织应用程序结构。但是如果你想分发你的 bundle 并遵循 symfony 的最佳实践,那么 bundle 是比 UI 分离更多的特性。阅读文档中有关捆绑包的更多信息。

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

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