Symfony2 DTO, Entitätskonvertierung

8

Ich erstelle eine symfony2-Anwendung mit doctrine2, und ich möchte um Rat bezüglich der üblichen / guten Praxis für DTO-Entity, Entity-DTO-Konvertierung bitten. Ich habe einige Informationen für alle Sprachen und Frameworks gefunden, aber keine für SF2.

Ich möchte Entitäten isolieren, so dass sie nur in Services und DAOs (Manager, Repositories in SF2-Terminologie) verwendet werden. Controller werden niemals DAOs oder Entitäten sehen und nur über Services mit der Geschäftslogik interagieren. Die gesamte Kommunikation zwischen Diensten und Controllern sollte über primitive Typen, Skalare, DTOs erfolgen.

Beispiel:

Controller

%Vor%

Service

%Vor%

Problem tritt schnell mit steigender Anzahl der Eigenschaften im Benutzerobjekt auf. In meiner Anwendung hat der Benutzer 13 Felder. Gibt es SF2-Tools (Klassen), um diesen Prozess zu vereinfachen? Schreibst du eigene Konverter / Transformatoren? Könnten Sie bitte ein Beispiel dafür zeigen, wie es aussehen sollte? Maby PHP magische Methoden könnten helfen? Was ist mit Reflexion?

Danke für Ratschläge und Meinungen.

    
Nik Denisov 30.05.2014, 11:16
quelle

2 Antworten

7

Beginnen Sie mit öffentlichen Eigenschaften auf Ihren dto's. Das eliminiert eine Reihe von Getter / Setter-Methoden, die eigentlich nichts für DTOs tun sollten. Sie können immer einige Majic-Methoden für spezielle Fälle hinzufügen.

Als nächstes überdenken Sie das Design Ihres DoctrineUserEntity aka Domain-Objekts. Brauchen Sie wirklich Getter / Setter für jedes Attribut? Wenn ja, worauf kommt es dann an?

Versuchen Sie stattdessen, Eigenschaften in Wertobjekte zu gruppieren:

%Vor%

Aber wieder, stellen Sie sicher, dass Sie tatsächlich einen Wert für Ihre Arbeit bekommen. Eine Reihe von Eins-zu-Eins-Zuordnungen kann auf anderen Plattformen sinnvoll sein, bei denen Domänenobjekte zwischen Anfragen am Leben bleiben können. In PHP beginnt alles vom Ground Zero.

    
Cerad 30.05.2014, 19:00
quelle
0

Eine Option, die ich kürzlich gefunden habe, ist Ссылка , die ein Generator für DTOs und Tests ist. Es macht die lästige Kesselplattengeneration für Sie.

    
jrjohnson 09.02.2016 17:06
quelle