如何在Symfony2项目中组织捆绑包?

时间:2011-12-07 13:05:42

标签: php symfony bundles

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

我只需将其复制粘贴到这里:

  

我想知道在一个内容中组织捆绑包的不同方式   项目人员正在使用。

     

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

     

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

     

你们是否将它们分开或将它们全部丢弃在一起?

3 个答案:

答案 0 :(得分:15)

修改I don't use bundles for app-specific code anymore


我个人更喜欢每个应用程序的一个部分都有一个包。例如:

  • UserBundle
  • BlogBu​​ndle
  • ForumBundle
  • JobBundle
  • StoreBundle

如果应用程序是几个功能的混合,这是没关系的,其中没有一个功能大到足以要求单独的应用程序和/或子域。但是,如果我正在开发一个大型网上应用程序,我的捆绑包将更加具体:

  • UserBundle
  • ProductBundle
  • CartBundle
  • SearchBundle
  • WishlistBundle

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

我通常有 CommonBundle ,其中包括所有常见内容,如全局CSS,图像,布局等。

后端组织至少还有两个选项:

  1. 每个捆绑包都有自己的后端部分,或
  2. 有一个大的后端捆绑。
  3. 就我个人而言,我倾向于第一个选项,您可以在我的previous answer中阅读它,但有些人更喜欢为整个后端使用单独的捆绑 - 可能使用admin bundles之一

    顺便说一句,捆绑互联是完全可以的 - 你不必让它们彼此独立。例如,JMSDiExtraBundle取决于metadata库和JMSAopBundle,而cg-library依赖于{{3}}。如果你试图保持捆绑包完全独立,那么你最终会得到一大堆单块的代码。

答案 1 :(得分:6)

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

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

有一件事是肯定的 - 将所有东西都塞进一个捆绑包中是不好的,这与这个架构首先实现的全部原因背道而驰!

答案 2 :(得分:0)

我在以下主题中的回答可能对您有所帮助:Symfony 2 : Location of Entities

我不是Symfony2的主人,但我认为我对捆绑设计非常了解;当然,没有普遍的答案,但你可以遵循一些“最佳实践”。

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

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

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

祝你好运!