【发布时间】:2016-10-07 15:04:15
【问题描述】:
我正在开发一个用于多个内部项目的客户端库。
项目 A 使用 Guzzle 5.x 项目 B 使用 Guzzle 6.x
两者都是相当单一的,我将项目 A 迁移到 6.x 的可能性非常小。
我正在开发的客户端库使用 Guzzle(目前为 5.x),并且该库将包含在项目 A 和 B 中。但是,Composer 拒绝这样做,因为我无法在我的外部项目中的客户端库和 6.x(需要该库的项目)。
如果有任何方法可以解决此问题,我将非常感谢您的建议(我想我可以将 Guzzle 5.x PHAR 文件粘贴到我的客户端库中,但这对我来说感觉很脏)。
既然最初的清嗓子已经完成 - 并且鉴于上述情况导致我陷入僵局,您会推荐哪个 HTTP 库除了 Guzzle?
Requests (http://requests.ryanmccue.info/) - 我对这个问题的犹豫是它似乎是对 cURL 的彻底重新实现,a) 似乎没有必要,b) 似乎注定要玩追赶 cURL 以及 HTTP2 带来的 HTTP 的复杂性等;看起来这将是一个令人头疼的维护
HTTPFul (https://github.com/nategood/httpful) - 似乎不再积极开发了
Buzz (https://github.com/kriswallsmith/Buzz) - 似乎不再活跃
... 或
- 别再充斥着 ******,保持你当前的库代码正常工作,只包含该死的 Guzzle 5.x PHAR。
【问题讨论】:
-
我不认为#4 真的是一个选项。假设您的项目正在使用 composer 的自动加载器,您将在尝试将 5.x phar 与已安装的 6.x 一起包含时遇到命名空间冲突(尝试重新定义类时出错)。没有?
-
靠,我认为你是对的。我可能会在不同的 PSR-4 定义下要求它...?
-
如果你想要一个使用 curl 的轻量级 HTTP 客户端,unirest.io/php.html 可能值得一看。我没有使用它,但 Mashape 是一个众所周知的实体。似乎很活跃。我可能会使用那个或请求,并亲自避免大吃大喝的冲突。臭,我知道。
-
几个月前我的处境完全相同,我们做出了将所有项目升级到 guzzle 6.x 的痛苦决定。如果我们不能这样做,我想我会使用 Requests 或 Unirest。
-
许多好的问题会根据专家的经验产生一定程度的意见,但这个问题的答案往往几乎完全基于意见,而不是事实、参考资料或特定专业知识。
标签: php curl composer-php guzzle