nyholm / psr7
PSR-7 的快速 PHP7 实现
1.8.2
2024-09-09 07:06 UTC
Requires
- php: >=7.2
- psr/http-factory: ^1.0
- psr/http-message: ^1.1 || ^2.0
Requires (Dev)
- http-interop/http-factory-tests: ^0.9
- php-http/message-factory: ^1.0
- php-http/psr7-integration-tests: ^1.0
- phpunit/phpunit: ^7.5 || ^8.5 || ^9.4
- symfony/error-handler: ^4.4
README
一个非常轻量级的 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 Nyholm 和 Martijn van der Ven 维护。他们决定此库的目标应该是提供一个非常严格的、速度极快的 PSR-7 实现。
此包将永不包含任何额外功能或辅助方法。我们所有的类和函数都存在,因为它们是满足 PSR-7 规范所必需的。