2012-02-27 77 views
4

我正在开发租户都是真正的和管理员(我们)的SaaS。所以“前端”和“后端”是一样的。无论如何,根据许多其他问题,捆绑包是以可重用方式构建项目的一种方式。头痛的设计Symfony2捆绑组织

我真的不认为我们的捆绑包会被重用,但我仍然需要一种方法将项目拆分成捆绑包以快速找到我们想要处理的文件。应用程序应该:

  • CRUD客户 - 租户应该能够管理他们 客户/合作伙伴关系
  • CRUD客户标签和关键字(一种方法来分类客户)
  • CRUD通过发送广播通知我们(邮件系统)
  • CRUD租户 - 我们应该能够管理我们的租户

那么,怎样才能组织我的包?可能是:

  • CoreBundle:只有Doctrine2车型
  • ResourcesBundle:模板,JS,CSS,图像
  • SystemUserBundle:管理租户和顾客CRUD
  • MessagingBundle:消息系统

该设计如何改进?

回答

10

按照Symfony2的文档:

在Symfony2中,捆绑就像是一个插件,除了所有在 应用程序的代码会活得束的内侧。一个软件包不仅仅是一个容纳与特定功能相关的所有内容的目录,还包括PHP类,配置,甚至样式表和 Javascript文件(请参阅软件包系统)。

就个人而言,在该描述之后,我会成立了SystemUserBundle遏制Doctrine2模型和模板/ JS/CSS /明确相关的管理客户,而不是分裂出来到CoreBundle和资源包的图像。但是,将您的应用分解为SystemUserBundle和MessagingBundle听起来像是一种合理的方法。

我喜欢这样想 - 该包是否包含了我可能需要的一些行为,或者希望插入到我参与的未来Symfony项目中。例如,客户管理可能会适用于任何应用程序并跨项目重用(实际上,这就是可扩展FOSUserBundle存在的原因)。

我不认为Symfony2文档在捆绑上有足够的细节(尚未!),但如果你还没有找到所有相关的部分,这些都是我所知道的: