PSR-7 与 HTTPlug

前言

最近国庆期间没继续开发项目,据说要有大变动,等国庆后开会讨论,内心有点方张。

Updated: 国庆后的第一天,果然砍了。难受。

趁着假期,封装了两个扩展包。

在构建后者的时候,考虑到 PSR-7 逐渐在 PHP 生态圈被大众接受,经过斟酌决定将 HTTP 客户端与 SDK 自身逻辑分离,完全遵循 PSR-7,所有请求都实现为 RequestInterface,随后使用任意兼容 PSR-7 的客户端发送即可,扩展包本身不关注 HTTP 协议的数据传输。

优势

实际上,可替换的 HTTP 客户端好处有很多。

  • 支持更多功能,可自定义 HTTP 客户端让 SDK 的请求走代理、带其它头信息等。
  • 保持项目精简干练、防止冲突,当你已经安装其它 HTTP 客户端扩展包,不需要再因为 SDK 的依赖不得不安装另一个 HTTP 客户端扩展,共用即可。
  • 如果你的项目已经处在开发中,甚至已经上线,可防止已有的 HTTP 客户端版本 SDK 内的出现冲突。
  • 若某个 HTTP 客户端出现 BUG,或项目维护者跑路,可随时切换另一个而无需改动 SDK 本身。
  • 若你的服务器环境(例如 PHP 版本问题等)不支持某扩展,可随时替换。
  • 利用诸如 Swoole 这类神器,可轻松实现协程的 HTTP 客户端,发挥巨大性能优势。

提醒自己

在不断解耦的同时,也要时刻防止掉进过度封装的怪圈;或许找到简单易用与繁复强大的平衡点,才是真正的最佳实践吧。