PSR-17-http-factory
이 문서는 PSR-7에 호환하는 HTTP 객체를 만드는 팩토리의 공통 표준을 설명합니다.
PSR-7은 HTTP 객체를 만드는 방법에 대한 권장 사항을 포함하지 않았기 때문에 PSR-7의 특정 구현과 관련되지 않은 구성 요소 내에 새로운 HTTP 객체를 생성해야 할 때 어려움을 겪습니다.
이 문서에 설명 된 인터페이스는 PSR-7 객체를 인스턴스화 할 수 있는 방법을 설명합니다.
이 문서에서 핵심이 되는 단어는 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL" 입니다. 이것은 RFC 2119에 설명 된대로 해석해야 합니다. 역자주: 위의 키워드는 아래의 번역문에 괄호안에 표시하였습니다

1. 명세서

HTTP 팩토리는 PSR-7에 정의 된대로 새 HTTP 객체를 만드는 방법입니다. HTTP 팩토리는 패키지가 제공하는 각 객체 유형에 대해 이러한 인터페이스를 구현해야합니다 (MUST).

2. Interfaces

다음 인터페이스들은 단일 클래스 내에서 또는 별도의 클래스들 내에서 함께 구현 될 수있습니다 (MAY).

2.1 RequestFactoryInterface

클라이언트 요청을 생성하는 기능
1
namespace Psr\Http\Message;
2
3
use Psr\Http\Message\RequestInterface;
4
use Psr\Http\Message\UriInterface;
5
6
interface RequestFactoryInterface
7
{
8
/**
9
* Create a new request.
10
*
11
* @param string $method The HTTP method associated with the request.
12
* @param UriInterface|string $uri The URI associated with the request.
13
*/
14
public function createRequest(string $method, $uri): RequestInterface;
15
}
Copied!

2.2 ResponseFactoryInterface

응답을 생성하는 하는 기능
1
namespace Psr\Http\Message;
2
3
use Psr\Http\Message\ResponseInterface;
4
5
interface ResponseFactoryInterface
6
{
7
/**
8
* Create a new response.
9
*
10
* @param int $code The HTTP status code. Defaults to 200.
11
* @param string $reasonPhrase The reason phrase to associate with the status code
12
* in the generated response. If none is provided, implementations MAY use
13
* the defaults as suggested in the HTTP specification.
14
*/
15
public function createResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface;
16
}
Copied!

2.3 ServerRequestFactoryInterface

서버 요청을 생성하는 기능
1
namespace Psr\Http\Message;
2
3
use Psr\Http\Message\ServerRequestInterface;
4
use Psr\Http\Message\UriInterface;
5
6
interface ServerRequestFactoryInterface
7
{
8
/**
9
* Create a new server request.
10
*
11
* Note that server parameters are taken precisely as given - no parsing/processing
12
* of the given values is performed. In particular, no attempt is made to
13
* determine the HTTP method or URI, which must be provided explicitly.
14
*
15
* @param string $method The HTTP method associated with the request.
16
* @param UriInterface|string $uri The URI associated with the request.
17
* @param array $serverParams An array of Server API (SAPI) parameters with
18
* which to seed the generated request instance.
19
*/
20
public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface;
21
}
Copied!

2.4 StreamFactoryInterface

요청 및 응답을 위한 스트림을 생성하는 기능
1
namespace Psr\Http\Message;
2
3
use Psr\Http\Message\StreamInterface;
4
5
interface StreamFactoryInterface
6
{
7
/**
8
* Create a new stream from a string.
9
*
10
* The stream SHOULD be created with a temporary resource.
11
*
12
* @param string $content String content with which to populate the stream.
13
*/
14
public function createStream(string $content = ''): StreamInterface;
15
16
/**
17
* Create a stream from an existing file.
18
*
19
* The file MUST be opened using the given mode, which may be any mode
20
* supported by the `fopen` function.
21
*
22
* The `$filename` MAY be any string supported by `fopen()`.
23
*
24
* @param string $filename The filename or stream URI to use as basis of stream.
25
* @param string $mode The mode with which to open the underlying filename/stream.
26
*
27
* @throws \RuntimeException If the file cannot be opened.
28
* @throws \InvalidArgumentException If the mode is invalid.
29
*/
30
public function createStreamFromFile(string $filename, string $mode = 'r'): StreamInterface;
31
32
/**
33
* Create a new stream from an existing resource.
34
*
35
* The stream MUST be readable and may be writable.
36
*
37
* @param resource $resource The PHP resource to use as the basis for the stream.
38
*/
39
public function createStreamFromResource($resource): StreamInterface;
40
}
Copied!
이 인터페이스의 구현은 문자열에서 리소스를 만들 때 임시 스트림을 사용해야합니다 (SHOULD). 이렇게하는 권장 방법은 다음과 같습니다 (RECOMMENDED).
1
$resource = fopen('php://temp', 'r+');
Copied!

2.5 UploadedFileFactoryInterface

업로드 된 파일의 스트림을 만들 수 있는 기능
1
namespace Psr\Http\Message;
2
3
use Psr\Http\Message\StreamInterface;
4
use Psr\Http\Message\UploadedFileInterface;
5
6
interface UploadedFileFactoryInterface
7
{
8
/**
9
* Create a new uploaded file.
10
*
11
* If a size is not provided it will be determined by checking the size of
12
* the stream.
13
*
14
* @link http://php.net/manual/features.file-upload.post-method.php
15
* @link http://php.net/manual/features.file-upload.errors.php
16
*
17
* @param StreamInterface $stream The underlying stream representing the
18
* uploaded file content.
19
* @param int $size The size of the file in bytes.
20
* @param int $error The PHP file upload error.
21
* @param string $clientFilename The filename as provided by the client, if any.
22
* @param string $clientMediaType The media type as provided by the client, if any.
23
*
24
* @throws \InvalidArgumentException If the file resource is not readable.
25
*/
26
public function createUploadedFile(
27
StreamInterface $stream,
28
int $size = null,
29
int $error = \UPLOAD_ERR_OK,
30
string $clientFilename = null,
31
string $clientMediaType = null
32
): UploadedFileInterface;
33
}
Copied!

2.6 UriFactoryInterface

클라이언트 및 서버 요청에 대한 URI를 생성하는 기능
1
namespace Psr\Http\Message;
2
3
use Psr\Http\Message\UriInterface;
4
5
interface UriFactoryInterface
6
{
7
/**
8
* Create a new URI.
9
*
10
* @param string $uri The URI to parse.
11
*
12
* @throws \InvalidArgumentException If the given URI cannot be parsed.
13
*/
14
public function createUri(string $uri = '') : UriInterface;
15
}
Copied!
Last modified 2yr ago