Prestashop 1.6,冲突:2 个不同的模块需要相同的 class,不同的版本

Prestashop 1.6, conflict: 2 different modules requiring same class, different versions

在我的 Prestashop 项目中,我有几个模块。在其中一个(我们称之为 "AWS")中,我使用 Composer(在 PHPStorm 中)安装了 AWS SDK,如 here 所述。 Composer 已 "required" 以及其他库 "guzzlehttp" 更新至其最终版本。

另一方面,还有另一个模块(我们称它为 "orangeConnect")也有 composer,它有一个早期版本的 "guzzlehttp"。

问题出在我在 php 中使用 AWS SDK 时,在第一个模块的 php 脚本中。发生的事情是它试图调用 URI Composer class 并且它崩溃了。其实是因为没有一个class"UriResolver"。问题是,如果我删除 "orangeConnect",那么 AWS SDK 会正确连接,这意味着 "AWS" 中的 class Uri 由于 "orangeConnect" 模块而未被正确获取。但是,我迫切需要在项目中支持"orangeConnect"。

总而言之,我怎样才能解决 PrestashopPHP 中 class 之间的冲突 并允许每个模块包含相应的有效版本guzzleHttp 没有冲突 任何类型的?

谢谢。

如果orangeConnect模块的官方维护者不升级代码,只有3种方法可以采取:

方法一:您可以维护一份自己的orangeConnect代码,并升级到最新的Guzzle。通常不会太难,因为 Guzzle 的界面设计得很好。

方法2:获取旧的Guzzle 代码并将其放入新的命名空间(例如:OldGuzzle)并使orangeConnect 使用OldGuzzle 命名空间。您可以通过简单地进行全局正则表达式替换来实现。

方法三:(仅适用于大系统)将你的PHP应用拆分成微服务模块,将orangeConnectAWS SDK隔离开来,使用不同的Guzzle.