头痛设计Symfony2捆绑组织

时间:2012-02-27 08:58:17

标签: symfony

我正在开发一个SaaS,租户既是真实的又是管理员(我们)。所以“fornt-end”和“back-end”是一样的。无论如何,根据许多其他问题,bundle是一种以可重用的方式构建项目的方法。

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

  • 客户的CRUD - 租户应该能够管理他们的 客户/伙伴关系
  • CRUD for customers标签和关键字(一种对客户进行分类的方式)
  • 我们发送的广播通知的CRUD(消息系统)
  • 租户的CRUD - 我们应该能够管理我们的租户

那么,如何组织我的捆绑?可能是:

  • CoreBundle :仅限Doctrine2模型
  • ResourcesBundle :templates,js,css,images
  • SystemUserBundle :管理租户和客户CRUD
  • MessagingBundle :消息系统

如何改进这种设计?

1 个答案:

答案 0 :(得分:10)

根据Symfony2文档:

  

在Symfony2中,bundle就像一个插件,除了所有的代码   你的应用程序将存在于一个包中。捆绑仅此而已   比包含与特定功能相关的所有内容的目录,   包括PHP类,配置,甚至样式表和   Javascript文件(参见捆绑系统)。

就个人而言,按照此描述,我将设置SystemUserBundle以包含专门与管理客户相关的Doctrine2模型和templates / js / css / images,而不是将它们分成CoreBundle和ResourceBundle。但是,将您的应用拆分为SystemUserBundle和MessagingBundle听起来像是一种合理的方法。

我喜欢这样思考 - 捆绑包是否封装了我可能需要或想要插入我参与的未来Symfony项目的一些行为。例如,客户管理可能适用任何应用程序,并跨项目重复使用(实际上,这就是可扩展的FOSUserBundle存在的原因)。

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