imphp / http
提供类似PSR7的http消息库
2.0.0
2022-06-19 08:47 UTC
Requires
- imphp/base: ~1.7
Suggests
- psr/http-message: This is required to use the PSR7 compatibility objects
README
这个库基于PSR7的理念,但有很多不同之处。虽然PSR7有一些很好的想法,但我个人并不喜欢这个想法的实际实现。将PHP的请求和响应数据等所有杂乱无章的东西都移动到合适的接口类中是个好主意。这不仅使得代码看起来更美观、更容易工作,而且还完全沙箱化了整个请求/响应过程,因为你的代码中不需要与静态PHP数据的某些方面硬绑定。你可以创建一个包含单个对象的整个请求。
但是,我对实现中的一些事情并不满意。最大的一点是Factory
设计模式,这对于某些事情来说很棒,但没有真正的原因要为这样的实现引入这么多的开销。
这个库中有3个主要接口,以及PSR7,分别是Request
、Response
和Uri
。这3个接口之间没有任何依赖关系,除了在Request
中的单个Host
头可能基于并从Uri
更新。但这个问题有简单的解决办法,无需将对象保持为只读状态。如果某些原因需要确保某些值不会被更改,可以手动进行clone
操作,因此规范应该简单地强制执行安全克隆策略,以确保实现考虑了克隆。
类型提示
PSR7设计用于与较老的PHP版本一起工作。因此,它不使用PHP的新类型声明类型。静态类型代码更容易工作并且更容易调试,而且尽管道路漫长(贯穿整个PHP 7.x系列),PHP最终在这个问题上达到了一个更成熟的阶段,因此,工具应该开始淘汰旧的支持并更多地利用它。
完整文档
您可以通过完整文档了解更多关于这个库提供的内容。
安装
使用.phar库
wget https://github.com/IMPHP/http/releases/download/<version>/imphp-http.phar
require "imphp-http.phar"; ...
通过git克隆
git clone https://github.com/IMPHP/http.git imphp/http/
Composer (Packagist)
composer require imphp/http