8

我有这个家伙的确切问题:http ://groups.google.com/group/symfony2/browse_thread/thread/cd35132cc6972f29

我将在这里复制粘贴它:

我想知道人们正在使用哪些不同的方式来组织项目中的捆绑包。

我似乎最终得到了一个项目的大量捆绑包或许多彼此密切相关(依赖)的捆绑包。例如;

我实现了自己的用户实体和登录表单等,但用户链接到一个组织(具有某些功能)。等等......我猜主要是重叠很多的实体......

你们是把它们分开还是把它们都扔在同一个包里?

4

3 回答 3

15

编辑不再将包用于特定于应用程序的代码


就我个人而言,我更喜欢每个应用程序的一部分都有一个捆绑包。例如:

  • 用户包
  • 博客捆绑
  • 论坛捆绑
  • 工作包
  • StoreBundle
  • ETC

如果应用程序是多个功能的混搭,这没关系,其中没有一个大到需要单独的应用程序和/或子域。但如果我正在开发一个大型网上商店应用程序,我的捆绑包会更具体:

  • 用户包
  • 产品包
  • 购物车捆绑
  • 搜索包
  • WishlistBundle
  • ETC

所以,我想说,这取决于项目的重点。一个项目的一部分可能是另一个项目的核心功能。

我通常有CommonBundle,所有常见的东西都放在那里,比如全局 CSS、图像、布局等。

此外,后端组织至少有两种选择:

  1. 每个捆绑包都有自己的后端部分,或者
  2. 有一个大的后端包。

就我个人而言,我倾向于第一个选项,您可以在我之前的回答中了解它,但是有些人更喜欢为整个后端使用单独的包 - 可能使用其中一个管理包

顺便说一句,捆绑包相互连接是完全可以的——你不必让它们相互独立。例如,JMSDiExtraBundle依赖于数据库和JMSAopBundle,而后者又依赖于cg-library。如果你试图让包完全独立,你最终会得到大块的单包代码。

于 2011-12-07T13:56:44.103 回答
6

对于每个项目,我从一个 CoreBundle 开始,我将所有内容放在一起。然后我只是在其中开发功能,随着时间的推移我重新评估它——如果有一天我可能会在其他地方使用这个功能(或者甚至发布到开源),我会将它移动到一个新的包中。

值得单独捆绑的功能的“大小”并不重要 - 我已经看到操作系统捆绑与 1 个单个 js 文件一样大:D

可以肯定的一件事——把所有东西都塞进一个包里是不好的,它违背了最初实现这个架构的全部原因!

于 2011-12-07T13:46:29.840 回答
0

我在以下主题中的回答可能会对您有所帮助:Symfony 2:实体位置

我不是 Symfony2 大师,但我认为我对 bundle 设计有相当的了解;当然,没有通用的答案,但您可以遵循一些“最佳实践”。

首先,我不认为大捆绑是一个好的解决方案;您不再像使用 Symfony1.4 那样将项目拆分为应用程序。您可能会问“但是我可以用前端/后端逻辑做什么?” ; 很简单,使用控制器!

每个捆绑包都应该引用一个模块,即项目墙上的一块石头。你必须划分你的应用程序;许多捆绑包还不错。当然,不要为每个实体做一个捆绑,那会浪费时间。但是想象一个博客应用程序:您将有一个用户包、文章包(它将管理帖子、类别等),最终是一个用于静态页面的包,......

您的捆绑包已链接并非不合逻辑;您正在构建一个完整的应用程序,因此在这种情况下它们是链接的。但这里的关键词是“泛化”;您的捆绑包应该能够链接到其他捆绑包,而不仅仅是您的捆绑包。您应该能够在其他项目中重用它。

祝你好运 !

于 2011-12-07T13:52:39.330 回答