sunrise / http-message
基于RFC-7230、PSR-7和PSR-17的PHP 7.4+ HTTP消息包装器
v3.0.0
2023-05-13 00:48 UTC
Requires
- php: >=7.4
- fig/http-message-util: ^1.1
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
Requires (Dev)
- php-http/psr7-integration-tests: ^1.1
- phpunit/phpunit: ~9.5.0
- sunrise/coding-standard: ~1.0.0
Provides
- dev-master
- v3.0.0
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.0
- v1.4.0
- v1.3.0
- v1.2.0
- v1.1.0
- v1.0.16
- v1.0.15
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- dev-renovate/phpunit-phpunit-11.x
- dev-renovate/psr-http-message-2.x
- dev-renovate/phpunit-phpunit-9.x
This package is auto-updated.
Last update: 2024-09-02 04:11:19 UTC
README
安装
composer require sunrise/http-message
文档导航
如何使用
我们强烈建议您学习 PSR-7 和 PSR-17,因为下面的示例将只展示表面上的例子。
全局环境中的服务器请求
use Sunrise\Http\Message\ServerRequestFactory; $request = ServerRequestFactory::fromGlobals();
HTML和JSON响应
HTML响应
use Sunrise\Http\Message\Response\HtmlResponse; /** @var $html string|Stringable */ $response = new HtmlResponse(200, $html);
JSON响应
use Sunrise\Http\Message\Response\JsonResponse; /** @var $data mixed */ $response = new JsonResponse(200, $data);
您也可以指定 编码标志 和最大嵌套深度,如下所示
$response = new JsonResponse(200, $data, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE, 512);
流
文件流
use Sunrise\Http\Message\Stream\FileStream; $fileStream = new FileStream('/folder/file', 'r+b');
PHP输入流
关于流的更多详细信息,请参阅 官方页面。
use Sunrise\Http\Message\Stream\PhpInputStream; $inputStream = new PhpInputStream();
PHP内存流
关于流的更多详细信息,请参阅 官方页面。
use Sunrise\Http\Message\Stream\PhpMemoryStream; $memoryStream = new PhpMemoryStream('r+b');
PHP临时流
关于流的更多详细信息,请参阅 官方页面。
use Sunrise\Http\Message\Stream\PhpTempStream; $tempStream = new PhpTempStream('r+b');
您还可以指定内存限制,当达到限制时,PHP将开始使用临时文件而不是内存。
请注意,默认内存限制为2MB。
$maxMemory = 1e+6; // 1MB $tempStream = new PhpTempStream('r+b', $maxMemory);
临时文件流
有关临时文件行为的更多详细信息,请参阅 官方页面。
该流以二进制读/写(w+b)模式打开唯一的临时文件。当文件关闭或程序终止时,文件将自动删除。
use Sunrise\Http\Message\Stream\TmpfileStream; $tmpfileStream = new TmpfileStream(); // Returns the file path... $tmpfileStream->getMetadata('uri');
如果您不需要上述行为,可以使用另一个临时文件流
use Sunrise\Http\Message\Stream\TempFileStream; $tempFileStream = new TempFileStream(); // Returns the file path... $tempFileStream->getMetadata('uri');
PSR-7和PSR-17
以下类实现了PSR-7
Sunrise\Http\Message\Request
Sunrise\Http\Message\Response
Sunrise\Http\Message\ServerRequest
Sunrise\Http\Message\Stream
Sunrise\Http\Message\UploadedFile
Sunrise\Http\Message\Uri
以下类实现了PSR-17
Sunrise\Http\Message\RequestFactory
Sunrise\Http\Message\ResponseFactory
Sunrise\Http\Message\ServerRequestFactory
Sunrise\Http\Message\StreamFactory
Sunrise\Http\Message\UploadedFileFactory
Sunrise\Http\Message\UriFactory
异常
此包中的任何异常都可以通过接口捕获
use Sunrise\Http\Message\Exception\ExceptionInterface; try { // some code... } catch (ExceptionInterface $e) { // some logic... }
测试运行
composer test