In this latest post to his site Rob Allen talks some about application structure and the different kinds of objects he uses in his applications.
I currently use a very simple set of core objects within my model layer: entities, mappers and service objects. [...] I dislike the phrase "service object" as the word "service" means so many things to so many people. I haven't heard a better phrase yet that everyone understands though.
He defines each of the types of objects to help make the separation clearer. Here they are in brief:
- Entities are objects that represent something in my business logic.
- Mappers know how to save and load an entity from the data store.
- Service objects provide the API that the rest of the application uses.
Some of the comments on the post relate his choices to use in Zend Framework v2-based applications, noting that there are some base components you can extend to create these kinds of objects.