【问题标题】:HTTP library for PHP (probably not Guzzle) [closed]PHP的HTTP库(可能不是Guzzle)[关闭]
【发布时间】: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?

  1. Requests (http://requests.ryanmccue.info/) - 我对这个问题的犹豫是它似乎是对 cURL 的彻底重新实现,a) 似乎没有必要,b) 似乎注定要玩追赶 cURL 以及 HTTP2 带来的 HTTP 的复杂性等;看起来这将是一个令人头疼的维护

  2. HTTPFul (https://github.com/nategood/httpful) - 似乎不再积极开发了

  3. Buzz (https://github.com/kriswallsmith/Buzz) - 似乎不再活跃


... 或


  1. 别再充斥着 ******,保持你当前的库代码正常工作,只包含该死的 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


【解决方案1】:

在 6 旁边运行 Guzzle 5

我不认为将 Guzzle 5.x 与 Guzzle 6 一起加载是一种选择,即使使用 Phar。假设您使用的是 Composer 的自动加载器,您可能会遇到命名空间冲突。

替代 HTTP 客户端库

我听说过有关 Requests 的好消息,但我自己没有使用过。我理解您对重新发明轮子的担忧。

如果您想要一个使用 curl 的轻量级 HTTP 客户端,请查看 http://unirest.io/php.html。我没有使用它,但 Mashape 是一个众所周知的实体。看起来很活跃。

使用 HTTPPlug 适配器

这也值得一看:

http://httplug.io/

现在您的个人项目可以将 Guzzle 6 或 Guzzle 5 连接到此适配器,并且您可以针对单个 PSR-7 API 对您的库进行编码。

【讨论】:

  • 不幸的是 HTTPlug 无法正常工作 - 但 Unirest 是完美的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多