Datamappers
Iemand die mij hier meer over kan vertellen?
Bijvoorbeeld:
Je haalt een record uit uw database.
Dit record met de database opmaak moet omgezet worden naar een business object.
--> daarvoor dient een datamapper
Omgekeerd:
Je hebt een business object en wilt dit opslaan in de database.
Dan moet dit object vertaald worden naar de opmaak van uw database.
--> daarvoor dient een datamapper
Eigenlijk moet je het ophalen van uw data in lagen bekijken:
- adapters: beheren gegevens van uw database: insert, update, select, delete, ... commandos
- mappers: vertalen de objecten naar de database structuur en omgekeerd
- services: deze laag gebruik ik als shortcut. Ik roep bijvoorbeeld Service_User::save($object) op die er voor zorgt dat de mapper aangeroepen wordt en vervolgens in de adapter opgeslagen wordt. Zo wordt uw code iets compacter. Je roept dus in uw code steeds de service laag op voor alle bewerkingen.
- models: dit zijn uw business objecten
Deze mappers kunnen natuurlijk ook dienen voor andere dingen zoals: omzetten van xml, json, ... naar en van uw business objecten.
http://i47.tinypic.com/2unvts4.png
Zoals je in het voorbeeld van Wouter kan zien, gebruikt men de mapper ook wel als een combinatie van: Adapter, Mapper en Service. Je kan deze layers ook echt in 3 verschillende soorten objecten plaatsen. bv: Service_Invoice, Mapper_Invoice, Table_Invoice.
Op die manier kan je dan bijvoorbeeld volgende interfaces maken:
Mapper_Interface:
- toArray($obj)
- fromArray($dbRecord)
- toMultiArray(array $objects)
- fromMultiArray(array $dbRecords)
Service_Interface:
- getById($id)
- save($obj)
- delete($obj)
Table_Interface:
- getById($id)
- save(array $data,$id = null)
- delete($id)
Natuurlijk: Hoe uitgebreid je het wilt doen, bepaal je zelf. Je kan ook gewoon alles in 1 mapper object steken.
Gewijzigd op 06/06/2012 08:52:12 door de VeeWee