如何处理几个SF2应用程序之间的共享代码?

时间:2013-10-18 09:00:30

标签: git symfony

假设我有一个复杂的结构化SF2应用程序,包括几个捆绑包,如CoreBundle,ApiMobileBundle,ApiPartnerBundle,WebsiteOneBundle,WebsiteTwoBundle,Backoffice1Bundle,Backoffice2Bundle,SearchBundle,UserBundle,LogBundle等......

到目前为止,一切都很好,应用程序在一个独特的GIT存储库下进行了版本控制。但是今天,我们想要创建另一个可以从主应用程序的一些捆绑包中受益的应用程序。请注意,生成的应用程序不会部署在相同的服务器上。

简而言之,我们希望在几个SF2应用程序中共享几个捆绑包。 你有什么建议?

修改

我问这个问题,因为我正在与之合作的一位开发人员说这是纯粹的异端而不是SF2哲学(关于应用程序的骨架,供应商管理,配置文件等......)。他认为最好的方法是将所有内容保存在同一个应用程序中,并且部署不必要的来源不是问题......

2 个答案:

答案 0 :(得分:2)

您最好的选择是将捆绑包从项目中提取出来并存储在他们自己的git存储库中。

然后,在composer.json文件中,将它们作为依赖项添加到两个项目中。

当然,这也取决于你的软件包与应用程序分离,但这是一个设计因素和另一个问题。

希望有所帮助。

答案 1 :(得分:1)

如果您拥有捆绑包之间相关的Doctrine实体,则可能会遇到一些麻烦。如果您决定使用其实体与另一个未使用的bundle相关的bundle,那么您将遇到Doctrine问题,解释here。这就是为什么使用接口实现实体关系和ResolveTargetEntityListener是个好主意。 (也就是说,如果你使用的是Doctrine。)

我认为我有一个非常简单的解决方案,我计划在接下来的几天内在前一个链接上发布缺失的实体问题,首先是我有时间实现它,测试并发布它。 / p>

这个想法是基本上尽可能地保持所有捆绑包的独立性。除非您在多个捆绑包中共享它,或者对于您的项目一般来说最重要的工作,否则不要在核心捆绑中保留任何内容。但到目前为止,我发现的最大问题是那些愚蠢的实体。