Voce pode realizar essa transformacoes na classe especifica e manter o desacoplamento entre seu dominio e infra.

Faz o mapeamento para/de dominio dentro do repositorio por exemplo. Mesma coisa com um controller da vida.

A abstração do data mapper em si não é necessaria a primeiro momento na maioria dos casos.

Consegue enviar um trecho de código de exemplo?

``` class FooRepository { public function find(int $id): Foo { $row = yourDbQueryThatReturnGenericRow(); // map to domain model here $foo = new Foo( $row->id, $row->something, $row->anotherSomething ); return $foo; } } ``` Não precisa abstrair essa lógica em uma nova classe sem motivos, se só vai usar ela ai, usa ela ai