【问题标题】:Two projects share same entities - how to maintain code?两个项目共享相同的实体——如何维护代码?
【发布时间】:2018-03-28 10:13:45
【问题描述】:

我们的项目分为两部分 - 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

【问题讨论】:

  • 请不要投反对票,除非你说明你这样做的原因。非常感谢。
  • 一种解决方法可能是多内核方法github.com/yceruto/symfony-skeleton-vkernel
  • 要考虑的一点是实体不必在 Symfony 包中。它们可以在自己的小共享包中关闭,然后您可以配置您的实体管理器以使用它们。至于您的反对投票请求,我建议您远离海洋,因为您可能会发现自己正试图阻止潮水涌入。

标签: symfony git-submodules


【解决方案1】:

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

或者您可以让您的实体在第三个项目中只是一个包含实体的捆绑包。您将使用Composer 添加到其他两个项目的捆绑包

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

【讨论】:

  • 是的,调用 API 和 API 以与实体通信的方式。但有时不打电话并让前端也处理一些实体会更快。我在考虑作曲家,但这是否意味着我必须从供应商处扩展捆绑包?
  • 是的,您的实体将在两个项目的供应商中
  • 我们选择了作曲家“idea”,所以我将此标记为正确/有用的答案。谢谢。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2014-07-05
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多