이번 시리즈의 마지막 글입니다. 이전 기사에서는 UserEntityBuilder 서비스를 사용하여 엔터티를 생성하는 애플리케이션 서비스를 만들었습니다. 그런 다음, 교리 엔터티 관리자(인프라 서비스)를 사용하여 엔터티를 유지하고 플러시했습니다.
이제 결과를 프레젠테이션 레이어로 반환할 차례입니다.
시리즈의 모든 기사에서 교리 개체를 도메인 개체로 간주했다는 점을 기억하고 싶습니다. 나는 이것이 완전히 정확하지 않으며 도메인 엔터티를 교리 엔터티와 분리하는 것이 더 낫다는 것을 이해하지만 단순화를 위해 교리 엔터티를 도메인 엔터티로 사용하여 이 기사를 마무리하겠습니다.
저는 전체 Symfony 애플리케이션을 어떻게 구성했는지 보여줄 새 기사를 준비 중입니다. 거기에서 도메인 엔터티가 교리와 완전히 분리되어 있음을 알 수 있습니다.
결과를 프레젠테이션 계층으로 반환하기 전에 반환하려는 데이터를 나타내는 DTO를 만들어야 합니다. email, firstName, lastName 및 dob 매개변수만 반환한다고 가정해 보겠습니다. 출력 DTO는 다음과 같습니다.
readonly class UserOutputDto { public function __construct( public string $email, public string $firstName, public string $lastName, public string $dob, ){} }
이제 출력 DTO가 준비되었으므로 엔터티의 출력을 빌드하는 서비스를 생성할 차례입니다. 어떤 정보가 출력 DTO에 포함될지 결정하므로 이 서비스는 도메인의 일부가 됩니다.
class UserOutputDTOBuilder { public function build(User $user): UserOutputDto { return new UserOutputDto( $user->getEmail(), $user->getFirstName(), $user->getLastName(), $user->getDob() ); } }
출력 빌더는 매우 간단합니다. UserOutputDto를 생성하여 엔터티 값의 매개변수를 생성자에 전달합니다.
이 출력 빌더는 로직을 포함하지 않으므로 애플리케이션 또는 프레젠테이션 계층의 일부일 수 있지만 UserEntityBuilder에서 했던 것처럼 도메인에 유지하겠습니다.
UserEntityBuilder에는 몇 가지 추가 논리가 포함되어 있다는 점을 기억하세요.
- 토큰 생성
- 현재 타임스탬프 생성
출력 DTO가 준비되었으면 이제 이를 프레젠테이션 계층으로 보낼 차례입니다. 우리의 경우 프레젠테이션 레이어를 구성하는 요소는 무엇입니까? Symfony JsonResponse를 생성하고 이를 HTTP 응답으로 반환한다는 점을 고려하면 컨트롤러는 프레젠테이션 계층을 나타내는 요소가 됩니다. 다시 돌아가 보겠습니다.
readonly class UserOutputDto { public function __construct( public string $email, public string $firstName, public string $lastName, public string $dob, ){} }
프레젠테이션 계층의 일부로 Symfony 컨트롤러는 인프라 부분(AbstractController json 함수)을 사용하여 출력 DTO 데이터에서 JsonResponse를 생성합니다. HTTP 응답.
보시다시피 심포니 컨트롤러는 다른 애플리케이션 서비스(DataProcessor 및 UserCreator)도 사용하여 API 호출 프로세스를 수행합니다.
이 시리즈의 마지막 기사에서는 Symfony 애플리케이션에서 프레젠테이션 계층으로 데이터를 반환하는 프로세스를 살펴보았습니다. 우리는 반환하려는 사용자 데이터, 특히 이메일, 이름, 성, 생년월일을 캡슐화하기 위해 출력 데이터 전송 개체(DTO)를 만드는 것부터 시작했습니다. 그런 다음 사용자 엔터티에서 이 DTO를 구성하는 UserOutputDTOBuilder 서비스를 개발하여 출력에 어떤 정보가 포함되는지 정의하는 것이 중요하다는 점을 강조했습니다.
마지막으로 JsonResponse 기능을 활용하여 DTO 데이터를 HTTP 응답으로 반환함으로써 Symfony 컨트롤러가 프레젠테이션 계층 역할을 하는 방법을 시연했습니다.
위 내용은 집중적인 도메인 애플리케이션 생성. Symfony 접근 방식(결과 반환)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!