| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator und Wett-König | Schau dir nochmal das domain object pattern an. Domänen Objekte repräsentieren Daten + Logik und delegieren lediglich die Persistenz nach aussen (zumeist über Entity-Manager oder Data-Mapper realisiert). Per se ist jedoch Persistent ein Thema eines Domänen-Objektes bzw. kommt dieses damit in Berührung. Insofern ist die Aussage nicht korrekt. Im Prinzip gibt es zwei Ansätze: echte Domänen-Objekte und DTO + Mapper wobei der Mapper dort im Vordergrund steht (="Ansprechpartner" für eine Business-Komponente). Weiterer Unterschied zwischen dem Domänen-Objekt-Konzept und DTO + Mapper ist, dass ein Domänen-Objekt die Geschäftslogik implementiert und bei DTO + Mapper meist eine Business-Komponente nach dem transaction script pattern hinzukommt. Doctrine2 und auch beispielsweise der GORM des APF generieren Domänen-Objekt-Hüllen, die du dann mit Leben (=Geschäftslogik) füllen musst.
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | ||
| Neuer Benutzer Registriert seit: 15.06.2011
Beiträge: 14
PHP-Kenntnisse: Fortgeschritten ![]() | Zitat:
Häh? Könntest Du das vielleicht noch ein wenig ausbauen? Ich habe den Eindruck, dass da einige Begriffe mindestens durcheinandergeworfen wurden - oder aber ein gewisser akademischer Hintergrund gängige Begrifflichkeiten synonym behandelt. Letztlich ist es nicht oder nur kaum zu verstehen. Zur Frage des TE: Der Data Mapper sorgt dafür, dass die entsprechenden Ergebnisdatensätze aus den Datenbankabfragen an ein relationales DBS auf eine gewisse Datenstruktur (exemplarisch eben ein Objektgraph) abgebildet wird. Und ja, die "Ergebnisklassen" sind letztlich "Domänenobjekte" (was prinzipiell alles heißen kann), "Entity" wäre ein besserer Begriff - ein Entity entspricht grob einem Tupel der Resultset. Also das, was hinten ´raus kommt. Es gibt zwei "konkurrierende", gängige Implementierungen: Das Active Record Pattern (siehe bspw. RoR oder auch Doctrine 1): Mapping der Daten auf eine komplexe Struktur, jedes "Active Record" erweitert eine abstrakte Basisklasse, die CRUD-Funktionalität bereitstellt: $car = CarProvider::find(1); $car->setName('Audi'); $car->save(); Demgegenüber steht das optimierte UnitOfWork-Pattern, das einen Entity-Manager implementiert: $audi=new Car('Audi 80'); $obbel = new Car('Opel Manta'); $em->persist($audi); $em->persist($obbel); $em->flush(); // schießt ein optimiertes, transaktional gekapseltes INSERT ab Doctrine 2 wie auch bspw. Hibernate folgen dem letztgenannten Muster. Entities sind immer Pojos respektive Popos. (bzw - je nach Hydration Mode - auch einfach nur Arrays). ActiveRecord vermischt Methoden zur Persistierung mit den Domänenobjekten ($car->save()), UnitOfWork trennt beides sauber voneinander. BEIDE allerdings bedienten sich sogenannter "Provider" bzw. Data Access Objects, um Geschäftslogik zu kapseln ($mantas = $myCarDao->findAllCarsWithFuchsschwanz()). Geändert von joshiausdemall (26.09.2011 um 14:04 Uhr). | |
| | |
| | ||||
| Moderator und Wett-König | Zitat:
Zitat:
Zitat:
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |||
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Problem mit Doctrine2 als ORM | skelle | Datenbanken | 12 | 16.01.2011 11:27 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| domänenobjekte, doctrine2, doctrine2 pattern, php mapper pattern implementierung, abgrenzung domänenobjekte, modell, entity, domänenobjekt, doctrine2 dto, doctrine 2 dto, doctrine2 transactionen, doctrine2 mapper, doctrine2 ergebnisse, doctrine2 register domain, php doctrine2, domänenobjekt beispiel programmieren, doctrine2 domain object, data mapper zwei domain objekte |