我有一个在 Symfony2 中开发的应用程序。现在它的结构如下:
这个结构好吗?或者像论坛功能一样使用捆绑包 - ForumBundle - 其中包括每一层(控制器,服务,域逻辑和与论坛相关的持久性。
答案 0 :(得分:17)
关于如何使用捆绑包构建应用程序没有严格的规则,但这是我在Symfony2上开发近一年后所得到的。
使用一个特定于应用程序的捆绑包。首先,我started包含多个捆绑包,例如CommonBundle
,UserBundle
,MainBundle
,{{1事实证明最终并不那么方便,所以我切换到了一个特定于应用程序的软件包 - BlogBundle
。
您可以使用子名称空间整齐地组织代码。例如,后端控制器将转到ContactBundle
子名称空间。
请注意,我正在讨论一个 app特定的捆绑包 - 这些内容对于具体的应用程序来说是独一无二的,并且在其他地方重用是没有意义的。您仍然可以为可重用的东西开发单独的包,并将它们放入供应商基础架构中。
保持非Symfony特定的东西不被捆绑。如果它们不是Symfony2特定的,则不需要为模型和捆绑中的Service Layer类创建捆绑包。有关详细信息,请参阅this question和我的回答。
答案 1 :(得分:5)
就像Elnur所说,使用一个AppBundle是一个很好的做法。
单个包本身实现了MVC模式,所以我认为使用bundle来分离你的层并不是一个好主意。
我认为使用捆绑包的最佳方式是思考“开源”。如果您正在开发的功能足够通用,可以为所有人发布,或者在将来的项目中重用,请将此功能放在一个包中。 这种方式将强制您构建功能,而不包含属于AppBundle的任何业务规则。
捆绑包是砖块
答案 2 :(得分:2)
有不同的方法来组织项目的应用程序结构。但是,如果您想要分发捆绑包并遵循symfony最佳实践,那么捆绑包比分离UI更多功能。有关在documentation中读取的包的更多信息。
我有两个具有以下结构的项目,我认为都是有效的: