最近,我决定使用ZF2而不是Symfony进行我的项目。现在,我遇到了模块的架构问题。
假设我们有一个应用程序,它允许我们:
我的第一个想法是创建一个模块“House”,其中包含房间和人员,另一个模块包含发票。
但是,如果我在需要来自“House”的数据的发票模块中有一些sql连接怎么办?这种情况确实使它们彼此依赖,因此它们不再是便携式的。所以,它们应该存储在一个模块中......
我认为创建另一个模块作为“仪表板”,将发票和房屋数据连接在一起将是一个解决方案,以保持他们的便携性,但它将使非常简单的应用程序过于分散。
我错过了什么吗?它更多的是关于主观项目组织(然后我是对的)或关于可移植性(然后我应该将所有内容组合在一个模块中)。
答案 0 :(得分:1)
在ZF2中,模块是应用程序的自主和可重用单元。默认情况下,您的应用程序具有单个Application模块。将模型,视图和控制器放在此模块中是正常的。
如果满足以下条件,您可能需要创建一个新模块:
如果您正在实现的功能是自治的(对应用程序的其他模块没有或很少依赖。例如,理论上的用户管理功能可以在另一个模块中分离,因为它不依赖于应用程序的其余部分,但应用程序依赖于它。
如果模块可以与您的应用程序分离并同时在另一个项目中使用。例如,用户管理模块可以在没有更改的情况下在另一个项目中重用(只有其配置可能需要更改)。
在任何情况下,现实生活都是复杂的,当看起来有必要创建一个新模块时,你应该被直觉引导。如果您认为分离模块中的功能可以带来一些显着的好处,那么就创建模块。
同时,您不应该通过创建大量几乎空的模块来滥用,最好将相关功能组合在一个模块中。
没关系,如果一个模块依赖另一个模块。在这种情况下,您只需安装两个模块,一切都会正常工作。
例如,当您使用Composer安装DoctrineORMModule
时,此模块依赖于DoctrineModule
,它会自动安装以解决依赖关系。