nyholm/psr7

PSR-7 的快速 PHP7 实现

资助包维护!
nyholm
Zegnat

安装量: 140 849 441

依赖项: 1 841

建议者: 111

安全: 1

星标: 1 151

关注者: 26

分支: 75

开放问题: 3

1.8.2 2024-09-09 07:06 UTC

README

Latest Version Total Downloads Monthly Downloads Software License Static analysis Tests

一个非常轻量级的 PSR-7 实现。非常严格且非常快速。

* 在 https://github.com/php-http/psr7-integration-tests 中完成的测试百分比

** 使用 50,000 次运行的基准测试。请参见 https://github.com/devanych/psr-http-benchmark(数值越高越好)

安装

composer require nyholm/psr7

如果您使用 Symfony Flex,则所有消息工厂都将注册为服务。

用法

PSR-7 对象不包含任何其他公共方法,除了在 PSR-7 规范 中定义的方法。

创建对象

使用 PSR-17 工厂创建请求、流、URI 等。

$psr17Factory = new \Nyholm\Psr7\Factory\Psr17Factory();
$request = $psr17Factory->createRequest('GET', 'http://tnyholm.se');
$stream = $psr17Factory->createStream('foobar');

发送请求

使用 HTTPlug 或任何其他 PSR-18(HTTP 客户端),您可以发送请求如下

composer require kriswallsmith/buzz
$psr17Factory = new \Nyholm\Psr7\Factory\Psr17Factory();
$psr18Client = new \Buzz\Client\Curl($psr17Factory);

$request = $psr17Factory->createRequest('GET', 'http://tnyholm.se');
$response = $psr18Client->sendRequest($request);

创建服务器请求

可以使用 nyholm/psr7-server 包从 PHP 超全局变量创建服务器请求。

composer require nyholm/psr7-server
$psr17Factory = new \Nyholm\Psr7\Factory\Psr17Factory();

$creator = new \Nyholm\Psr7Server\ServerRequestCreator(
    $psr17Factory, // ServerRequestFactory
    $psr17Factory, // UriFactory
    $psr17Factory, // UploadedFileFactory
    $psr17Factory  // StreamFactory
);

$serverRequest = $creator->fromGlobals();

发送响应

composer require laminas/laminas-httphandlerrunner
$psr17Factory = new \Nyholm\Psr7\Factory\Psr17Factory();

$responseBody = $psr17Factory->createStream('Hello world');
$response = $psr17Factory->createResponse(200)->withBody($responseBody);
(new \Laminas\HttpHandlerRunner\Emitter\SapiEmitter())->emit($response);

我们的目标

此包目前由 Tobias NyholmMartijn van der Ven 维护。他们决定此库的目标应该是提供一个非常严格的、速度极快的 PSR-7 实现。

此包将永不包含任何额外功能或辅助方法。我们所有的类和函数都存在,因为它们是满足 PSR-7 规范所必需的。