Lehre 2 Wertobjekte

8

Ich habe Value-Objekte als benutzerdefinierte DBAL-Typen in Doctrine 2 implementiert und es funktioniert OK. Ich habe mich jedoch gefragt, ob dies der beste Weg ist. Ich habe darüber nachgedacht, den Post Load Listener zu verwenden, um die Value Objects zu instanziieren. Wenn man sie auf Wunsch auch durch Entity-Accessoren instantiiert, wäre der Vorteil bei letzteren, dass ich nicht mehr Objekte instanziieren würde, als ich brauche.

Meine Frage ist: Welche Methode ist die beste? Oder gibt es einen besseren Weg? Gibt es irgendwelche Fehler oder unangemessene Leistungseinbußen mit den oben genannten?

    
John 09.12.2011, 03:57
quelle

1 Antwort

8

IMHO, beide Ansätze sind gleichermaßen wertvoll, während Sie auf native Unterstützung für Wertobjekte warten.

Ich persönlich bevorzuge den zweiten Ansatz (indem ich sie über Accessoren auf Anfrage instanziiere) aus zwei Gründen:

  • Wie Sie bereits erwähnt haben, bietet es eine bessere Leistung, da die Konvertierung nur bei Bedarf durchgeführt wird;
  • Es entkoppelt Ihre Anwendung von der Doctrine-Abhängigkeit: Sie schreiben weniger Doctrine-spezifischen Code.

Ein Beispiel für diesen Ansatz:

%Vor%

Dieser Code wird relativ einfach umgestaltet, wenn Doctrine native VO-Unterstützung anbietet.

Über benutzerdefinierte Zuordnungsarten , Ich benutze sie auch für Einzelfeld-VO ( Decimal , Point , Polygon , ...), würde sie aber für allgemeine, wiederverwendbare Typen reservieren, die mehrfach verwendet werden können Projekte, nicht für projektspezifische Einzelfeld VO, wo ich den obigen Ansatz bevorzugen würde.

    
Benjamin 11.12.2011, 13:50
quelle

Tags und Links