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