PSR-17 HTTP 工厂

最后更新于:2022-04-02 02:19:55

[TOC] ## 安装 ``` composer require psr/http-factory ``` ## 接口
Psr\Http\Message\RequestFactoryInterface ``` namespace Psr\Http\Message; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\UriInterface; interface RequestFactoryInterface { /** * 创建一个新的请求 * * @param string $method 请求使用的 HTTP 方法。 * @param UriInterface|string $uri 请求关联的 URI。 */ public function createRequest(string $method, $uri): RequestInterface; } ```

Psr\Http\Message\ResponseFactoryInterface ``` namespace Psr\Http\Message; use Psr\Http\Message\ResponseInterface; interface ResponseFactoryInterface { /** * 创建一个响应对象。 * * @param int $code HTTP 状态码,默认值为 200。 * @param string $reasonPhrase 与状态码关联的原因短语。如果未提供,实现 **可能** 使用 HTTP 规范中建议的值。 */ public function createResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface; } ```

Psr\Http\Message\ServerRequestFactoryInterface ``` namespace Psr\Http\Message; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\UriInterface; interface ServerRequestFactoryInterface { /** * 创建一个服务端请求。 * * 注意服务器参数要精确的按给定的方式获取 - 不执行给定值的解析或处理。 * 尤其是不要从中尝试获取 HTTP 方法或 URI,这两个信息一定要通过函数参数明确给出。 * * @param string $method 与请求关联的 HTTP 方法。 * @param UriInterface|string $uri 与请求关联的 URI。 * @param array $serverParams 用来生成请求实例的 SAPI 参数。 */ public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface; } ```

Psr\Http\Message\StreamFactoryInterface ``` namespace Psr\Http\Message; use Psr\Http\Message\StreamInterface; interface StreamFactoryInterface { /** * 从字符串创建一个流。 * * 流 **应该** 使用临时资源来创建。 * * @param string $content 用于填充流的字符串内容。 */ public function createStream(string $content = ''): StreamInterface; /** * 通过现有文件创建一个流。 * * 文件 **必须** 用给定的模式打开文件,该模式可以是 `fopen` 函数支持的任意模式。 * * `$filename` **可能** 是任意被 `fopen()` 函数支持的字符串。 * * @param string $filename 用作流基础的文件名或 URI。 * @param string $mode 用于打开基础文件名或流的模式。 * * @throws \RuntimeException 如果文件无法被打开时抛出。 * @throws \InvalidArgumentException 如果模式无效会被抛出。 */ public function createStreamFromFile(string $filename, string $mode = 'r'): StreamInterface; /** * 通过现有资源创建一个流。 * * 流必须是可读的并且可能是可写的。 * * @param resource $resource 用作流的基础的 PHP 资源。 */ public function createStreamFromResource($resource): StreamInterface; } ```

Psr\Http\Message\UploadedFileFactoryInterface ``` namespace Psr\Http\Message; use Psr\Http\Message\StreamInterface; use Psr\Http\Message\UploadedFileInterface; interface UploadedFileFactoryInterface { /** * 创建一个上传文件接口的对象。 * * 如果未提供大小,将通过检查流的大小来确定。 * * @link http://php.net/manual/features.file-upload.post-method.php * @link http://php.net/manual/features.file-upload.errors.php * * @param StreamInterface $stream 表示上传文件内容的流。 * @param int $size 文件的大小,以字节为单位。 * @param int $error PHP 上传文件的错误码。 * @param string $clientFilename 如果存在,客户端提供的文件名。 * @param string $clientMediaType 如果存在,客户端提供的媒体类型。 * * @throws \InvalidArgumentException 如果文件资源不可读时抛出异常。 */ public function createUploadedFile( StreamInterface $stream, int $size = null, int $error = \UPLOAD_ERR_OK, string $clientFilename = null, string $clientMediaType = null ): UploadedFileInterface; } ```

Psr\Http\Message\UriFactoryInterface ``` namespace Psr\Http\Message; use Psr\Http\Message\UriInterface; interface UriFactoryInterface { /** * 创建一个 URI。 * * @param string $uri 要解析的 URI。 * * @throws \InvalidArgumentException 如果给定的 URI 无法被解析时抛出。 */ public function createUri(string $uri = '') : UriInterface; } ```

';