两个项目共享相同的实体——如何维护代码?

Two projects share same entities - how to maintain code?

我们有一个项目分为两部分 - API 和前端。
两者都是用 Symfony 3.4 编写的,并且都在不同的服务器以及 git 个存储库中。
您可能已经知道,Symfony 使用捆绑包,每个捆绑包都有自己的实体。
我们的两个项目都使用捆绑包中的相同实体,而且前端还有一些额外功能。

目前,要维护实体有些困难,因为我们在其中一个实体中所做的每项更改都必须与另一个项目的实体保持一致。

我正在考虑使用 git 中的子模块功能来使它们保持最新状态,但是,捆绑包中的其他文件夹呢?喜欢服务和控制器?我只想跟踪实体,这样当我们进行更改时,两个项目(或任何人)都可以在没有我们的情况下拥有这些实体,而无需复制粘贴内容。

你在想什么,有什么建议?

这是一个结构示例。我希望它是可读的


Project A          Project B
-Bundle 1          -Bundle 1
---Entities        --- Entities

-Bundle 2          -Bundle 2
---Entities        ---Entities
---Services

-Bundle 3          -Bundle 3
---Entities        ---Entities
                   ---Services

                   -Bundle 4

有一些选项,您可以使用 API 获取有关 Frontend 的数据,这意味着您只需要 API 包中的实体。

或者您可以让您的实体在第三个项目中只与实体捆绑在一起。您将使用 Composer

添加到其他两个项目的捆绑包

https://knpuniversity.com/screencast/question-answer-day/create-composer-package

将实体 and/or 共享部分移到另一个存储库中,并考虑开始使用 git 子模块或 git 子树。使用此技巧,您可以在另一个存储库中添加一个 git 存储库。并且您还可以更新从子模块提交和推送的共享内容。