sunrise/http-message

基于RFC-7230、PSR-7和PSR-17的PHP 7.4+ HTTP消息包装器


README

Build Status Code Coverage Scrutinizer Code Quality Total Downloads Latest Stable Version License

安装

composer require sunrise/http-message

文档导航

如何使用

我们强烈建议您学习 PSR-7PSR-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

有用的链接