2016-08-02 65 views
-1

我们正在尝试运行几个共享大约90%代码的站点。业务领域是相同的,但他们的用户界面有点不同。因此他们将有不同的CSS。具有不同用户界面的共享代码库

您将如何管理代码库以共享需要它的代码?

+0

对不起,但您已将您的问题标记为架构。如果一切都一样,但UI有什么架构问题?像如何“包含()”相关的“共享”代码库?目前所写的所有内容都是一个没有足够背景的问题...... – kayess

+0

@ close-vot这听起来很宽泛,但实际上具体到足以应答。检查[这里](http://meta.stackoverflow.com/a/323828/576767)。有关标签是不同的,但原则是相同的。共享代码是PHP生态系统方面的一个特殊问题。 –

回答

1

两种常规方法

  • 结构的共享部分作为作曲家包

例如,所有的应用程序级别的代码,如路由器,依赖管理,验证,域实体映射可管理如Composer依赖关系通过Packagist。如果代码不可打开,可以使用专用回购作为依赖关系。

然后,您将为每个站点设置不同的回购站点,并使用Composer构建相同的部件,并仅对实际不同的部件进行编码。你可能有两台服务器,用于不同的域。

这意味着通过Composer和代码进行更多配置。

 
repo 1 
    /app 
     /viewSpecificToOne 
    /public 
     /cssSpecificToOne 
     /jsSpecificToOne 
     index.php 
    /vendor 
     /[dependencies installed through composer] 
repo 2 
    /app 
     /viewSpecificToTwo 
    /public 
     /cssSpecificToTwo 
     /jsSpecificToTwo 
     index.php 
    /vendor 
     /[dependencies installed through composer] 
  • 管理来自同一回购

这是接近其他解决方案的所有网站,但你会在不同的路线发送到不同的前端控制器,谁也使用相同的域映射器,验证,路由器等,但有两个不同的视图层,这将具有特定的代码。

这意味着从服务器提供更多配置以服务来自两个公共回购站的每个域。

 
Repo 
    /app 
     /view1 
      /viewLogicSpecificToOne 
     /view2 
      /viewLogicSpecificToTwo 
    /public1 
     /cssSpecificToOne 
     /jsSpecificToOne 
     index.php 
    /public2 
     /cssSpecificToTwo 
     /jsSpecificToTwo 
     index.php 
    /lib 
     /sharedPackages