Slim Framework 매뉴얼 컨셉 PSR-7 및 값 객체

slim framework
slim framework

Slim은 요청 및 응답 개체에 대해 PSR-7 인터페이스를 지원합니다. 따라서 모든 PSR-7 구현을 사용할 수 있으므로 Slim이 유연해집니다. 예를 들어 GuzzHttp\Psr7\CachingStream 인스턴스 또는 GuzzleHttp\Psr7\stream_for() 함수에서 반환된 인스턴스를 반환할 수 있습니다.

슬림은 자체 PSR-7 구현을 제공하므로 즉시 사용할 수 있습니다. 그러나 Slim의 기본 PSR-7 개체를 타사 구현으로 자유롭게 교체할 수 있습니다. 응용 프로그램 컨테이너의 requestresponse 서비스를 재정의하여 Psr\Http\Message\ServerRequestInterfacePsr\Http\Message\ResponseInterface 인스턴스를 각각 반환합니다.

값 객체 ( Value Object )

요청 및 응답 개체는 불변 값 개체입니다. 속성 값이 업데이트된 복제 버전을 요청해야만 “변경”할 수 있습니다. 값 개체는 속성이 업데이트될 때 복제되어야 하므로 공칭 오버헤드가 있습니다. 이러한 오버헤드는 성능에 아무런 영향을 미치지 않습니다.

PSR-7 인터페이스 메서드를 호출하여 값 개체의 복사본을 요청할 수 있습니다(이러한 메서드에는 일반적으로 with 접두사가 있음). 예를 들어 PSR-7 Response 객체는 새 HTTP 헤더와 함께 복제된 값 객체를 반환하는 withHeader($name, $value) 메소드를 가지고 있다.

<?php
  
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
​
require __DIR__ . '/../vendor/autoload.php';
​
$app = AppFactory::create();
​
$app->get('/foo', function (Request $request, Response $response, array $args) {
    $payload = json_encode(['hello' => 'world'], JSON_PRETTY_PRINT);
    $response->getBody()->write($payload);
    return $response->withHeader('Content-Type', 'application/json');
});
​
$app->run();

PSR-7 인터페이스는 Request 및 Response 객체를 변환하기 위한 다음과 같은 방법을 제공합니다.

  • withProtocolVersion($version)
  • withHeader($name, $value)
  • withAddedHeader($name, $value)
  • withoutHeader($name)
  • withBody(StreamInterface $body)

PSR-7 인터페이스는 Request 객체를 변환하기 위한 다음과 같은 방법을 제공합니다.

  • withMethod($method)
  • withUri(UriInterface $uri, $preserveHost = false)
  • withCookieParams(array $cookies)
  • withQueryParams(array $query)
  • withUploadedFiles(array $uploadedFiles)
  • withParsedBody($data)
  • withAttribute($name, $value)
  • withoutAttribute($name)

PSR-7 인터페이스는 응답 오브젝트를 변환하기 위한 다음과 같은 방법을 제공합니다.

  • withStatus($code, $reasonPhrase = '')

이러한 방법에 대한 자세한 내용은 PSR-7 설명서를 참조하십시오.