Symfony2:实现共享相同逻辑的多个项目

时间:2014-11-02 11:53:02

标签: symfony

我已经阅读了很多关于这个主题的内容,但是找不到关于如何围绕symfony2构建复杂项目的明确答案......

我的新项目将采用以下方式构建: 1)在我们合作伙伴网站的子域上托管的一个后台网站 2)一个合作伙伴的网站 3)一个(或多个)客户的网站

当然,这些网站中的每一个都将从“核心”捆绑包(即:核心实体,核心用户逻辑等)共享逻辑,但它们还需要具有自定义路由,自定义模板等。 ..

我认为我有两个选择:

1)为每个网站定义1个包并根据主机名定义路由,但似乎不推荐

2)按网站实施一个SF2实例,并将核心包复制/部署到每个实例

什么是最佳解决方案?有没有关于如何实施某种复杂项目的另一种解决方案?

1 个答案:

答案 0 :(得分:0)

很难说哪种情况最适合您的特定情况:我已将这两种方法用于项目。我实际上有一个同时使用两种方法的项目,包括两个Symfony应用程序:一个生成主网站,另一个生成一个包含其他功能的单独应用程序,另外一个用于"用户"功能和" admin"功能。我们使用Varnish根据URL路径将请求分派给正确的应用程序。

根据我的经验,我发现拥有多个应用程序会给整体解决方案带来一定程度的复杂性。这使得使用和保持“大图片”变得更加复杂。你头脑中的整个系统。如果要在不同的服务器上运行应用程序,还可能会产生成本影响。您还需要考虑为本地开发设置整个解决方案的开销,如果您在一个以上的团队中,这肯定是一个问题。

另一方面,整个解决方案(即一个应用程序)的一部分工作通常更直接:其他应用程序的配置值/依赖关系不需要设置,只有你自己需要为那个独立的应用程序提供最低限度的工作。这种方法还为您提供了很大的灵活性,并能够将更改集中在解决方案的某个特定区域。例如:如果您想对合作伙伴的网站进行一些更改,如果这是由完全独立的应用程序生成的,那么执行此操作就变得简单了。您知道不会对您的其他应用程序产生连锁反应。这也适用于共享代码,为您提供正确的版本:使用composer,您的单独应用程序可以根据需要依赖于共享包/库的不同版本。具有单独应用程序的另一个好处是能够彼此独立地扩展它们。如果您的客户网站获得的流量远远超过您的合作伙伴网站,则可以在更好的硬件/虚拟化实例上进行设置,从而对性能/成本进行更精细的控制。

使用Composer共享代码相对简单,在我看来,这不是主要关注点之一:在做出决定时要仔细考虑上述因素。