2009-02-04 11 views
7

Ich baue eine App in PHP und ich verwende das Data Mapper-Muster für meinen DB-Zugriff. Ich habe erwogen, das Observer-Muster zu verwenden, damit alle meine Mapper die von ihnen erstellten Entitäten beobachten, sodass sie Änderungen automatisch in der Datenbank speichern können, ohne dass ich sie manuell analysieren muss.Data Mapper + Observer Muster

Ich habe mich nur gefragt, ob das eine gute Idee war, oder ob es schlechte Praktiken etc. sind?

Ich arbeite normalerweise mit ein paar Objekten, die in einer Hierarchie miteinander verbunden sind, und im Moment jedes Objekt manuell zu seinem Mapper analysieren muss, was ziemlich mühsam ist, also versuche nur, eine bessere Lösung zu finden .

Danke, Jack

+0

Große Frage, hoffe, Sie bekommen einige anständige Antworten. – Asciant

Antwort

3

definitiv klingt wie eine gute Idee zu mir. Was Sie tun, ist dem Muster Unit Of Work ähnlich, das dazu dient, die Änderungen zu verfolgen, die Sie an gemappten Objekten vorgenommen haben, und das Commit (normalerweise als einzelne Transaktion), sobald Sie fertig sind.

Ich glaube, dass Projekte wie Outlet und Repose dies für Sie in PHP zur Verfügung stellen sowie einige der Mapping-Schmerzen lindern, aber ich habe sie nicht persönlich benutzt.

Nebenbei, es klingt wie Ihre Objekthierarchien können davon profitieren, als Aggregates angesehen werden, wenn Sie den Domain Driven Design Pfad gehen und profitieren von der sauberen Isolierung, die es bringt.

-

Edit: es sieht auch wie eZ Components eine ziemlich voll funktionsfähige PHP ORM Lösung hat, und Doctrine 2.0 wird auch auf diese Weise gestaltet sich.

-

Edit 2: Ich nicht Blick auf Propel oder Creole für das Problem, das Sie diskutieren. Kreolisch ist kein ORM, sondern eher eine DB-Abstraktionsschicht ähnlich wie PDO - und das Projekt ist nun offiziell "Dead". Propel verwendet das ActiveRecord-Muster, nicht das DataMapper-Muster, so dass Ihre Domänenobjekte viel mehr Persistenz und AFAIK aufweisen und keine Unit of Work-Funktion enthält.

+0

Hallo, vielen Dank für die Informationen, ich werde sicherlich in die Projekte, die Sie erwähnt haben, schauen. –

Verwandte Themen