我正面临PHP安排问题。以下是一些背景信息:
我正在使用PHP OpenSource框架(Prestashop)。
我使用覆盖修改了它的行为(扩展类以重新定义其中一个函数)并添加我开发的新模块。
我使用Docker和Gitlab CI / CD运行PHP 7.1。
我想继续为多个客户端维护一个应用程序。
现在,这是我的问题:
客户想要使用Prestashop模块(从他们的市场购买),但是这个模块需要覆盖我已经覆盖的类(可能是一个函数)。
如果我复制/手动合并上述代码并根据客户环境调整其使用条件,那么最佳行动方案是什么?
欢迎提出任何建议,
谢谢。
答案 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