PHP 的 HTTP 库(可能不是 Guzzle)

HTTP library for PHP (probably not Guzzle)

我正在开发要在多个内部项目中使用的客户端库。

项目 A 使用 Guzzle 5.x 项目 B 使用 Guzzle 6.x

两者都相当单一,我将项目 A 迁移到 6.x 的可能性很小。

我正在开发的客户端库使用 Guzzle(5.x 目前),这个库将包含在项目 A 和 B 中。但是,Composer 对此犹豫不决,因为我不能使用 Guzzle 5.x 在我的客户端库中,在外部项目(需要该库的项目)中 6.x。

如果有任何方法可以解决此问题,我将不胜感激(我想我可以将 Guzzle 5.x PHAR 文件粘贴到我的客户端库中,但我觉得这很脏)。

既然已经完成了初步的清理工作 - 考虑到上述情况导致我陷入僵局,除了 Guzzle,你会推荐哪个 HTTP 库?

  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.

运行 Guzzle 5 和 6

我不认为加载 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 编写您的库。