我想知道人们在项目中组织bundles的不同方式。
我似乎要么是为一个项目创建一个巨大的bundle,要么是创建很多与彼此紧密相关的(依赖)bundles。例如,我实现了自己的用户实体和登录表单等等,但是用户与组织(具有某些功能)相关联。等等...我猜主要是实体之间有很多重叠...
你们是将它们拆分开还是全部放在同一个bundle中?
个人而言,我喜欢按应用程序的每个部分拆分成一个bundle。例如:
如果应用程序是几个不同功能的混合体,并且没有一个足够大需要单独的应用程序或子域名,则这样做是可以接受的。但是,如果我正在开发一个大的网店应用程序,则我的bundles将更加具体:
所以,我想说,这取决于项目的重点。对于一个项目的某个部分来说可能只是一个section,但对于另一个项目来说可能是核心功能。
我通常会拥有一个CommonBundle,其中包含所有常规的东西,如全局CSS、图像、布局等。
还有至少两个后端组织选项:
个人而言,我更倾向于第一种选择,您可以在我的以前的回答中了解更多信息,但也有人喜欢为整个后端单独创建一个bundle - 可能是使用其中之一的管理 bundles。
顺便提一下,捆绑包之间互相连接是完全可以的,您不必让它们彼此独立。例如,JMSDiExtraBundle 依赖于 metadata 库和 JMSAopBundle,而这些库又依赖于 cg-library。如果您试图使捆绑包完全独立,最终会得到庞大的单一捆绑包代码。
我在下面的主题中的回答可能会对你有所帮助:Symfony 2 : Location of Entities
虽然我不是Symfony2的专家,但我认为我对bundle设计有相当好的理解;当然,没有通用的答案,但你可以遵循一些“最佳实践”。
首先,我认为大型bundles不是一个好的解决方案;你不再像Symfony1.4那样将项目分成应用程序。你可能会问:“但前端/后端逻辑怎么办?”;非常简单,使用控制器!
每个bundle应该引用一个模块,是你项目中的一个组成部分。你必须划分你的应用程序;许多bundles并不是坏事。当然,不要为每个实体创建一个bundle,那将是浪费时间的。但想象一下一个博客应用程序:你会有一个用户bundle,文章bundle(它将管理帖子、类别等),最终可能还有一个静态页面的bundle,...
你的捆绑包被链接起来并不是不合逻辑;因为你正在构建整个应用程序,所以在这种情况下它们被链接了。但关键词在于“泛化”;你的捆绑包应该能够链接到其他捆绑包,而不仅仅是你自己的。你应该能够在其他项目中重复使用它。
祝好运!
User
和Organisation
(假设系统中还有其他依赖于Organisation
的内容)- 不同的捆绑包。BlogPost
和BlogPostRevision
- 相同的捆绑包。这在一定程度上是基于系统设计的直觉 - 捆绑包应该只封装您认为是连贯的某些功能。 - Kasheen