Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen fokussierter Domänenanwendungen. Ein Symfony-Ansatz (Rückgabe des Ergebnisses)

Erstellen fokussierter Domänenanwendungen. Ein Symfony-Ansatz (Rückgabe des Ergebnisses)

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-24 01:36:10652Durchsuche

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

Einführung

Dies ist der letzte Artikel dieser Serie. Im vorherigen Artikel haben wir einen Anwendungsdienst erstellt, der den Dienst UserEntityBuilder zum Erstellen der Entität verwendet hat. Anschließend wurde der Doctrine Entity Manager (ein Infrastrukturdienst) verwendet, um die Entität beizubehalten und zu leeren.
Jetzt ist es an der Zeit, ein Ergebnis an die Präsentationsebene zurückzugeben.

Ich möchte daran erinnern, dass wir die Lehrentitäten in allen Artikeln der Serie als Domänenentitäten betrachtet haben. Ich verstehe, dass dies nicht ganz richtig ist und dass es besser wäre, die Domänenentitäten von den Doktrinentitäten zu trennen, aber der Einfachheit halber werde ich diesen Artikel beenden, indem ich die Doktrinentitäten als Domänenentitäten verwende

Ich bereite einen neuen Artikel vor, in dem ich zeigen werde, wie ich eine vollständige Symfony-Anwendung strukturiert habe, und dort werden Sie sehen, dass die Domänenentitäten vollständig von der Doktrin entkoppelt sind.

Erstellen eines Ausgabe-DTO und eines Ausgabe-Builders

Bevor wir das Ergebnis an die Präsentationsebene zurückgeben, müssen wir ein DTO erstellen, um die Daten darzustellen, die wir zurückgeben möchten. Stellen wir uns vor, wir möchten nur die Parameter email, firstName, lastName und dob zurückgeben. Unser Ausgabe-DTO würde so aussehen:

readonly class UserOutputDto {

    public function __construct(
        public string $email,
        public string $firstName,
        public string $lastName,
        public string $dob,
    ){}
}

Da das Ausgabe-DTO nun fertig ist, ist es an der Zeit, einen Dienst zu erstellen, um die Ausgabe einer Entität zu erstellen. Dieser Dienst wird Teil unserer Domäne sein, da wir entscheiden, welche Informationen Teil des Ausgabe-DTO sein werden.

class UserOutputDTOBuilder {

    public function build(User $user): UserOutputDto
    {
        return new UserOutputDto(
            $user->getEmail(),
            $user->getFirstName(),
            $user->getLastName(),
            $user->getDob()
        );
    }
}

Der Ausgabe-Builder ist ziemlich einfach, er erstellt einen UserOutputDto und übergibt die Parameter aus den Entitätswerten an den Konstruktor.

Dieser Ausgabe-Builder könnte Teil der Anwendungs- oder Präsentationsschicht sein, da er keine Logik enthält, aber ich werde ihn in der Domäne belassen, wie ich es mit dem UserEntityBuilder getan habe.
Denken Sie daran, dass der UserEntityBuilder einige zusätzliche Logik enthielt:

  • Token generieren
  • Generieren Sie den aktuellen Zeitstempel

Rückgabe der Daten

Sobald das Ausgabe-DTO fertig ist, ist es an der Zeit, es an die Präsentationsebene weiterzuleiten. Aus welchen Elementen besteht in unserem Fall die Präsentationsschicht? Unter Berücksichtigung der Tatsache, dass wir eine Symfony-JsonResponse generieren und diese als HTTP-Antwort zurückgeben, wäre der Controller das Element, das unsere Präsentationsebene darstellen würde. Kehren wir darauf zurück.

readonly class UserOutputDto {

    public function __construct(
        public string $email,
        public string $firstName,
        public string $lastName,
        public string $dob,
    ){}
}

Als Teil der Präsentationsschicht verwendet der Symfony-Controller seinen Infrastrukturteil (die AbstractController json-Funktion), um eine JsonResponse aus den ausgegebenen DTO-Daten zu generieren, die innerhalb von a zurückgegeben werden kann HTTP-Antwort.
Wie Sie sehen, verwendet der Symfony-Controller auch andere Anwendungsdienste (DataProcessor und UserCreator), um den API-Aufrufprozess durchzuführen.

Abschluss

In diesem letzten Artikel der Serie haben wir den Prozess der Rückgabe von Daten an die Präsentationsebene in einer Symfony-Anwendung untersucht. Wir begannen mit der Erstellung eines Ausgabe-Data-Transfer-Objekts (DTO), um die Benutzerdaten zu kapseln, die wir zurückgeben wollten, insbesondere E-Mail, Vorname, Nachname und Geburtsdatum. Anschließend haben wir einen UserOutputDTOBuilder-Dienst entwickelt, um dieses DTO aus der Benutzerentität zu erstellen, wobei wir die Bedeutung der Definition der in der Ausgabe enthaltenen Informationen hervorheben.
Abschließend haben wir demonstriert, wie der Symfony-Controller als Präsentationsschicht fungiert und die JsonResponse-Funktionalität nutzt, um die DTO-Daten als HTTP-Antwort zurückzugeben.

Das obige ist der detaillierte Inhalt vonErstellen fokussierter Domänenanwendungen. Ein Symfony-Ansatz (Rückgabe des Ergebnisses). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn