7 Stimmen

Daten-Mapper + Beobachter-Muster

Ich baue eine App in PHP und ich bin mit dem Daten-Mapper-Muster für meine DB-Zugriff. Ich erwog, das Observer-Muster zu verwenden, um alle meine Mapper die Entitäten zu beobachten, die sie erstellen, so dass sie automatisch alle Änderungen zurück in die Datenbank speichern können, ohne dass ich sie manuell zurück analysieren muss.

Ich wollte nur wissen, ob das eine gute Idee ist, oder ob es eine schlechte Praxis ist usw.

Ich bin in der Regel arbeiten mit ein paar Objekten, die miteinander in einer Hierarchie verknüpft sind, und im Moment mit jedem Objekt zu parsen, es ist Mapper manuell, die ziemlich mühsam ist, so gerade versuchen, mit einer besseren Lösung zu kommen.

Danke! Jack

3voto

Michael Hart Punkte 4949

Für mich klingt das auf jeden Fall nach einer guten Idee. Was Sie tun, ist ähnlich wie die Einheit der Arbeit Muster, das dazu gedacht ist, die Änderungen, die Sie an zugeordneten Objekten vorgenommen haben, zu verfolgen und zu übertragen (normalerweise als eine einzige Transaktion), sobald Sie fertig sind.

Ich glaube, dass Projekte wie Auslass y Rücklage in PHP zur Verfügung stellen und auch einige der Mapping-Schmerzen lindern, aber ich habe sie nicht persönlich benutzt.

Nebenbei bemerkt, klingt es so, als ob Ihre Objekthierarchien davon profitieren könnten, als Aggregate wenn Sie den Weg nach unten gehen wollen Domänenorientiertes Design und profitieren Sie von der sauberen Isolation, die sie mit sich bringt.

--

Edit: Es sieht auch so aus eZ Komponenten verfügt über ein ziemlich vollwertiges PHP ORM Lösung, und Doktrin 2.0 entwickelt sich ebenfalls in diese Richtung.

--

Bearbeiten 2: I würde nicht Sehen Sie sich Propel oder Creole für das von Ihnen angesprochene Problem an. Creole ist kein ORM, sondern eher eine DB-Abstraktionsschicht ähnlich wie PDO - und das Projekt ist jetzt offiziell "tot". Propel verwendet das ActiveRecord-Muster und nicht das DataMapper-Muster, so dass Ihre Domänenobjekte am Ende viel mehr Verantwortung für die Persistenz haben und AFAIK enthält es keine Unit-of-Work-Funktion.

0voto

Syntax Punkte 1304

Wenn Sie sich für ORMs interessieren, schauen Sie sich Folgendes an Vorantreiben y Kreolisch .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X