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
클라이언트 요청을 생성하는 기능
namespacePsr\Http\Message;usePsr\Http\Message\RequestInterface;usePsr\Http\Message\UriInterface;interfaceRequestFactoryInterface{/** * Create a new request. * * @paramstring $method The HTTP method associated with the request. * @paramUriInterface|string $uri The URI associated with the request. */publicfunctioncreateRequest(string $method, $uri):RequestInterface;}
2.2 ResponseFactoryInterface
응답을 생성하는 하는 기능
namespacePsr\Http\Message;usePsr\Http\Message\ResponseInterface;interfaceResponseFactoryInterface{/** * Create a new response. * * @paramint $code The HTTP status code. Defaults to 200. * @paramstring $reasonPhrase The reason phrase to associate with the status code * in the generated response. If none is provided, implementations MAY use * the defaults as suggested in the HTTP specification. */publicfunctioncreateResponse(int $code =200,string $reasonPhrase =''):ResponseInterface;}
2.3 ServerRequestFactoryInterface
서버 요청을 생성하는 기능
namespacePsr\Http\Message;usePsr\Http\Message\ServerRequestInterface;usePsr\Http\Message\UriInterface;interfaceServerRequestFactoryInterface{/** * Create a new server request. * * Note that server parameters are taken precisely as given - no parsing/processing * of the given values is performed. In particular, no attempt is made to * determine the HTTP method or URI, which must be provided explicitly. * * @paramstring $method The HTTP method associated with the request. * @paramUriInterface|string $uri The URI associated with the request. * @paramarray $serverParams An array of Server API (SAPI) parameters with * which to seed the generated request instance. */publicfunctioncreateServerRequest(string $method, $uri,array $serverParams = []):ServerRequestInterface;}
2.4 StreamFactoryInterface
요청 및 응답을 위한 스트림을 생성하는 기능
namespacePsr\Http\Message;usePsr\Http\Message\StreamInterface;interfaceStreamFactoryInterface{/** * Create a new stream from a string. * * The stream SHOULD be created with a temporary resource. * * @paramstring $content String content with which to populate the stream. */publicfunctioncreateStream(string $content =''):StreamInterface;/** * Create a stream from an existing file. * * The file MUST be opened using the given mode, which may be any mode * supported by the `fopen` function. * * The `$filename` MAY be any string supported by `fopen()`. * * @paramstring $filename The filename or stream URI to use as basis of stream. * @paramstring $mode The mode with which to open the underlying filename/stream. * * @throws\RuntimeException If the file cannot be opened. * @throws\InvalidArgumentException If the mode is invalid. */publicfunctioncreateStreamFromFile(string $filename,string $mode ='r'):StreamInterface;/** * Create a new stream from an existing resource. * * The stream MUST be readable and may be writable. * * @paramresource $resource The PHP resource to use as the basis for the stream. */publicfunctioncreateStreamFromResource($resource):StreamInterface;}
이 인터페이스의 구현은 문자열에서 리소스를 만들 때 임시 스트림을 사용해야합니다 (SHOULD). 이렇게하는 권장 방법은 다음과 같습니다 (RECOMMENDED).
$resource =fopen('php://temp','r+');
2.5 UploadedFileFactoryInterface
업로드 된 파일의 스트림을 만들 수 있는 기능
namespacePsr\Http\Message;usePsr\Http\Message\StreamInterface;usePsr\Http\Message\UploadedFileInterface;interfaceUploadedFileFactoryInterface{/** * Create a new uploaded file. * * If a size is not provided it will be determined by checking the size of * the stream. * * @link http://php.net/manual/features.file-upload.post-method.php * @link http://php.net/manual/features.file-upload.errors.php * * @paramStreamInterface $stream The underlying stream representing the * uploaded file content. * @paramint $size The size of the file in bytes. * @paramint $error The PHP file upload error. * @paramstring $clientFilename The filename as provided by the client, if any. * @paramstring $clientMediaType The media type as provided by the client, if any. * * @throws\InvalidArgumentException If the file resource is not readable. */publicfunctioncreateUploadedFile(StreamInterface $stream,int $size =null,int $error =\UPLOAD_ERR_OK,string $clientFilename =null,string $clientMediaType =null ):UploadedFileInterface;}
2.6 UriFactoryInterface
클라이언트 및 서버 요청에 대한 URI를 생성하는 기능
namespacePsr\Http\Message;usePsr\Http\Message\UriInterface;interfaceUriFactoryInterface{/** * Create a new URI. * * @paramstring $uri The URI to parse. * * @throws\InvalidArgumentException If the given URI cannot be parsed. */publicfunctioncreateUri(string $uri ='') :UriInterface;}