因为我们没有很多选择,所以我们的团队计划使用Symfony 2(旧的Back-Office和新的API)构建两个不同的应用程序,存储在两个不同的Github存储库中。但是只有一个数据库和共享的学说实体。 每个项目中有一个实体(因此是两个),“指向”数据库中的同一个表。
这绝对是个坏主意吗? 是否有共享实体的解决方案?
答案 0 :(得分:4)
理论上你可以用Symfony捆绑包来做到这一点。
您可以使用所有实体和其他共享代码创建共享的“核心”捆绑包,并将其放入单独的存储库中。您将能够将此捆绑包集成到每个应用程序的“AppBundle”中。
但是,由于您的应用程序将共享同一个数据库,因此您需要确保两个应用程序始终使用完全相同的核心软件包版本。这可能会使维护更加困难。
更简单的方法可能是创建一个包含三个包的应用程序。一个用于业务逻辑,两个用作单独的表示层。
Symfony 4(编辑)
当我从第3版出来后停止使用Symfony时,我对Symfony 4的'无捆绑'方法的回答有点犹豫,但我会试一试,因为它似乎是一个非常受欢迎的问题。
因此,即使您不再需要创建捆绑包,仍然可以创建它们。如果您在应用程序之间共享代码,那么the docs推荐它。我觉得这同样适用于monorepos。
或者,您可以将整个持久层抽象为共享库。这将允许您在完全不同的框架之间共享同一组实体。