PHP覆盖冲突

时间:2018-04-19 12:36:42

标签: php git docker override gitlab

我正面临PHP安排问题。以下是一些背景信息:

  • 我正在使用PHP OpenSource框架(Prestashop)。

  • 我使用覆盖修改了它的行为(扩展类以重新定义其中一个函数)并添加我开发的新模块。

  • 我使用Docker和Gitlab CI / CD运行PHP 7.1。

  • 我想继续为多个客户端维护一个应用程序。

现在,这是我的问题:

客户想要使用Prestashop模块(从他们的市场购买),但是这个模块需要覆盖我已经覆盖的类(可能是一个函数)。

如果我复制/手动合并上述代码并根据客户环境调整其使用条件,那么最佳行动方案是什么?

欢迎提出任何建议,

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您的项目使用composer自动加载依赖项,则可以使用以下模式:

1)在源根目录中创建一个目录。 (例如:src / VendorOverride)

示例目录结构:

|-- src
|----- VendorOverride
|-------- VendorName
|----------- SomeNamespace
|-------------- ClassThatYouWantToOverride.php
|-- vendor
|----- VendorName
|-------- SomeNamespace
|----------- ClassThatYouWantToOverride.php

2)配置composer autoload以加载你想要的类。

"autoload": {
    ... (your original mapping here)
    "psr-4": {
        "VendorName\\": "src/VendorOverride/VendorName"
    }
}

3)转储自动加载以反映更改。

composer dump-autoload