Prestashop Guzzle冲突

Jon*_*y C 8 php prestashop composer-php guzzle prestashop-1.7

我正在通过包含使用 6.0 的包来更新模块.

Prestashop 1.7使用较旧版本的Guzzle 5.

当我在Prestashop上安装插件时,包含的Guzzle版本与Prestashop冲突,导致以下错误.

未捕获的PHP异常InvalidArgumentException:"魔术请求方法需要URI和可选的选项数组"在/var/www/html/modules/package/vendorpackage/guzzlehttp/guzzle/src/Client.php第81行{"exception":"[object ](InvalidArgumentException(code:0):魔术请求方法需要在/var/www/html/modules/package/vendorpackage/guzzlehttp/guzzle/src/Client.php:81)"} []中的URI和可选选项数组

我找到了一些类似问题的其他例子:

基于这些,我对如何解决这个问题有一些想法.这些都不是正确的做法.当然有一种更清晰的方法来处理像这样的问题?

  • 从包含的包中删除Guzzle - 这是最简单的一个,我的问题是如果我删除这个依赖关系它停止了什么,说什么其他依赖关系不会在以后删除不能删除的行?

  • 可以检查Guzzle的包版本和交换调用取决于哪一个加载 - 类似于上面的问题我可以修复以确定我应该使用哪种类型的调用此错误,但我不能告诉其他问题这可能加注,我的代码最终可能会出现每个版本的语句.

  • 手动更改插件中guzzle的名称空间.所以我可以进入我的包的vendor文件夹并为包强制一个特定的命名空间,我猜这将解决我的问题,但我正在失去安装可重用包的重点.

  • Fork Guzzle并参考该版本.我可以将guzzle插入并将其作为VCS包包含在插件中.这里的问题是我必须继续保持前进.

cwh*_*hsu 1

简单的方法是选择 guzzle 的替代包,但这可能不适合您。

  • 优点

你节省很多时间

  • 缺点

你使用不同的包来做同样的事情。

温和方法是 fork guzzle,然后手动更改名称空间。

  • 优点

您无需更改 Prestashop 中的任何内容。

如果Prestashop升级到guzzle 6.0,您可以轻松切换到它。

  • 缺点

你必须维护你自己定制的狂饮。

最难方法是自己给 Prestashop 打补丁

  • 优点

你会得到你想要的一切。

发送拉取请求,您可能会帮助很多其他人。

  • 缺点

如果 Prestashop 继续使用 guzzlehttp 5.0,您最终会陷入修补噩梦。

结论

如果我必须使用guzzle ,我会选择温和的方式。如果我只想用几行代码做一些特别的事情,我只会使用替代包。你不能由作曲家安装同一包的不同版本。