ホームページ >バックエンド開発 >PHPチュートリアル >焦点を絞ったドメイン アプリケーションの作成。 Symfony のアプローチ (結果を返す)

焦点を絞ったドメイン アプリケーションの作成。 Symfony のアプローチ (結果を返す)

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-24 01:36:10707ブラウズ

Creating focused domain applications. A Symfony approach (Returning the result)

導入

これがこのシリーズの最後の記事です。前の記事では、UserEntityBuilder サービスを使用してエンティティを作成するアプリケーション サービスを作成しました。次に、Doctrine エンティティ マネージャー (インフラストラクチャ サービス) を使用してエンティティを永続化し、フラッシュしました。
次に、プレゼンテーション層に結果を返します。

このシリーズのすべての記事を通じて、私たちが教義エンティティをドメイン エンティティとして考慮してきたことを覚えておきたいと思います。これが完全に正しいわけではなく、ドメイン エンティティをドクトリン エンティティから分離した方がよいことは理解していますが、簡単にするために、ドクトリン エンティティをドメイン エンティティとして使用してこの記事を終了します

私は完全な Symfony アプリケーションをどのように構築したかを示す新しい記事を準備しています。そこでは、ドメイン エンティティが教義から完全に切り離されていることがわかります。

出力 DTO と出力ビルダーの作成

結果をプレゼンテーション層に返す前に、返したいデータを表す DTO を作成する必要があります。 emailfirstNamelastName、および 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 応答。
ご覧のとおり、symfony コントローラーは他のアプリケーション サービス (DataProcessor および UserCreator) も使用して API 呼び出しプロセスを実行します。

結論

シリーズのこの最後の記事では、Symfony アプリケーションのプレゼンテーション層にデータを返すプロセスについて説明しました。まず、出力データ転送オブジェクト (DTO) を作成して、返したいユーザー データ、具体的には電子メール、名、姓、生年月日をカプセル化しました。次に、ユーザー エンティティからこの DTO を構築するための UserOutputDTOBuilder サービスを開発し、出力にどのような情報が含まれるかを定義することの重要性を強調しました。
最後に、Symfony コントローラーが JsonResponse 機能を利用して DTO データを HTTP 応答として返すプレゼンテーション層としてどのように機能するかを示しました。

以上が焦点を絞ったドメイン アプリケーションの作成。 Symfony のアプローチ (結果を返す)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。