2011-10-31 26 views
9

我是Symfony框架第2版的新手。我使用v1制作了一些项目,但现在试图让我的头部围绕新版本和它的功能。 我读过Bundles的概念,但它的目的还不是很清楚。复杂Web应用程序中Symfony Bundle的确切描述

假设你有一个大型的网络应用程序,例如CRM。捆绑包会是什么样子? 它是NewsletterBundle(用于发送通讯),ContactManagementBundle(用于管理联系人),UserBundle(用于编辑用户及其权限)。

或者它会像EmailBundle(用于处理整个电子邮件流量),CRMBundle(用于放入所有CRM代码),PermissionsBundle,ApiBundle那样更少。

回答

21

我喜欢这样想:一个包应该代表一个特定的功能或一组项目的相似功能。

您的第一个示例比第二个示例更好地使用了bundle,因为每个bundle的用途更加明确。尽管一切都可以使用一个CRMBundle,但您不会真正利用Symfony组织代码的能力。此外,如果您想将自己的简报代码移植到新项目中,但不是全部的CRM代码,则您可以更容易地复制NewsletterBundle而不是复制CRMBundle,然后修剪它。

当想到一个Symfony2项目时,有时候你想忘记你对symfony 1.x的所有知识,因为它们采用截然不同的方法来解决许多问题。例如,在symfony 1中,通常为项目构建“前端”和“后端”应用程序,每个应用程序显然都包含特定于项目部分的逻辑。所以你可能在前端和后端应用都有一个新闻通讯控制器。在Symfony2中,最好只使用一个通讯包,但使用两个控制器(也许称为“前端”和“后端”)。同样,这样做的直接好处是代码的可重用性如何。

+0

非常感谢,这让事情变得更加清晰。 – tomvo

+2

“Symfony组织你的代码的能力”?我很抱歉,但symfony只是强制你创建捆绑包,并因此被绑定到基于约定的自动发现(也许你翻译为“代码组织”)。 – Florian

+1

我使用symfony学到了一些东西,就像在应用程序开发人员那样,在捆绑下组织事物通常是个坏主意。你最终绑定到一个框架。相反,组织你的代码就好像没有框架一样。 Symfony2非常擅长,它非常灵活,你可以做到这一点。 – Florian

相关问题