php - Prestashop 1.6,冲突: 2 different modules requiring same class, 不同版本

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

在我的 Prestashop 项目中,我有几个模块。在其中一个(我们称之为“AWS”)中,我使用 composer(在 PHPStorm 中)安装了 AWS SDK,如 here 所述。 . Composer 已经“需要”,在其他库中,“guzzlehttp”,更新到它的最终版本。

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

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

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

谢谢。

最佳答案

如果orangeConnect模块的官方维护者不升级代码,那么只有3种方法:

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

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

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

关于php - Prestashop 1.6,冲突: 2 different modules requiring same class, 不同版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48385669/

相关文章:

amazon-web-services - 用于 aws_api_gateway_integration 的 uri,用于类型 AWS(集成)到 DynamoDb

batch-file - 批处理文件仅将今天的文件上传到 S3(获取文件名作为列表,循环,执行 cp 命令)

amazon-web-services - 使用 boto3 访问其他 aws 用户 s3 存储桶

javascript - 通过浏览器/服务器语言获得 html 元素结构的最佳方式?

php - PHP 中的动态逻辑表达式解析/评估?

php - 将 ','的数据从数据库提取到csv文件

java - 从android简单上传到S3

php - mysqli_real_escape_string() 无法正常运行

ssl - AWS EIP To Load balancer 混淆了 XP 上的证书存储

java - aws "Cannot create enum from "+ 区域名称 + "value!"