【问题标题】:Prestashop 1.6, conflict: 2 different modules requiring same class, different versionsPrestashop 1.6,冲突:2 个不同的模块需要相同的类,不同的版本
【发布时间】:2023-03-09 14:37:01
【问题描述】:

在我的 Prestashop 项目中,我有几个模块。在其中一个(我们称之为“AWS”)中,我使用 composer(在 PHPStorm 中)安装了 AWS SDK,正如 here 所解释的那样。 Composer 已将“必需”以及其他库“guzzlehttp”更新到其最终版本。

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

问题在于当我在第一个模块的 php 脚本中使用 php 中的 AWS 开发工具包时。发生的情况是它尝试调用 URI Composer 类并崩溃。实际上,因为不存在一类“UriResolver”。问题是,如果我删除“orangeConnect”,则 AWS SDK 连接正确,这意味着“AWS”中的 Uri 类由于“orangeConnect”模块而未被正确采用。但是,我必须在项目中支持“orangeConnect”。

总而言之,我如何解决 Prestashop 中 PHP 中的类之间的冲突,并允许每个模块包含相应的有效版本的 guzzleHttp 没有任何冲突 ?

谢谢。

【问题讨论】:

    标签: php amazon-web-services amazon-s3 prestashop-1.6 guzzle


    【解决方案1】:

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

    方法一:你可以保留一份自己的orangeConnect代码,升级到最新的Guzzle。通常这并不难,因为 Guzzle 的界面设计得很好。

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

    方法3:(仅适用于大系统)将你的PHP应用划分为微服务模块,将orangeConnectAWS SDK隔离开来,让它们使用不同的Guzzle

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 2023-04-11
      • 2012-01-12
      • 2013-04-01
      • 2019-06-25
      • 1970-01-01
      相关资源
      最近更新 更多