具有不同UI的共享代码库

时间:2016-08-02 05:36:43

标签: php architecture codebase

我们正在尝试运行几个共享大约90%代码的网站。业务域是相同的,但它们的UI有点不同。因此他们会有不同的CSS。

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

1 个答案:

答案 0 :(得分:1)

两种一般方式

  • 将共享部件构建为Composer包

例如,所有应用程序级代码(例如路由器,依赖关系管理,验证,域实体映射)都可以通过Composer作为Packagist依赖关系进行管理。如果代码不是可开源的,那么可以使用私有存储库作为依赖关系。

然后,您将为每个站点使用不同的repo,并使用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]
  • 管理来自同一个仓库的所有网站

这与其他解决方案很接近,但您可以将不同的路由发送到不同的前端控制器,这些控制器将使用相同的域映射器,验证,路由器等,但具有两个不同的View层,这些层将具有特定的代码。

这意味着服务器需要从两个公共存储库中为每个域提供更多配置。

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