复杂Web应用程序中Symfony Bundle的准确描述

tom*_*mvo 9 symfony

我是Symfony框架的第2版的新手.我用v1制作了一些项目,但现在试图了解新版本及其功能.我读过Bundles的概念,但它的目的还不是很清楚.

假设您有一个大型Web应用程序,例如CRM.捆绑包怎么样?它是NewsletterBundle(用于发送新闻简报),ContactManagementBundle(用于管理联系人),UserBundle(用于编辑用户及其权限).

或者它可以减少像EmailBundle(用于处理整个电子邮件流量),CRMBundle(用于放入所有CRM代码),PermissionsBundle,ApiBundle.

Ste*_*nte 20

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

您的第一个示例是比第二个示例更好地使用bundle,因为每个bundle的用途更加明确.虽然可以将一个CRMBundle用于所有内容,但您不会真正利用Symfony组织代码的能力.此外,如果您想将新闻稿代码移植到新项目,而不是所有 CRM代码,您可以更轻松地复制NewsletterBundle而不是复制CRMBundle,然后修剪它.

在考虑Symfony2项目时,有时候你想要忘记你所知道的关于symfony 1.x的所有内容,因为它们采用了截然不同的方法来解决许多问题.例如,在symfony 1中,为项目构建"前端"和"后端"应用程序是很常见的,每个应用程序显然都包含特定于项目部分的逻辑.因此,您可能在前端和后端应用程序中都有一个Newsletter控制器.在Symfony2中,你最好只使用一个Newsletter包,但有两个控制器(可能名为'frontend'和'backend').同样,对此的直接好处是您的代码可重用的方式.

  • "Symfony组织代码的能力"?我很抱歉,但是symfony只是强迫你创建捆绑包,因此被绑定到基于约定的自动发现(可能你转换为"代码组织"). (2认同)