Da quanto ho capito, un DomainService dovrebbe essere implementato su una RepositoryInterface, quindi potremmo cambiare facilmente il repository (che è parte del livello Infrastructure)
Quindi, se ho:
class UserService{
function __construct(UserRepository $rep){
$this->rep = $rep;
}
function createNewUser($attributes){
return $this->rep->create($attributes)->persist();
}
}
Significa che nel mio ApplicationService (alcuni lo chiamano Action) avrei:
'' '
class UserAplicationService{
function create(UserCreateCommand $command){
$service = new UserService(new UserRepoitory());
$service->create($command->getAttributes())
}
}
'' '
Ciò significa che ogni volta che utilizzo il mio DomainService devo istanziare il mio oggetto repository. Non rendere questo ApplicationServices accoppiato con l'implementazione del repository?
Domanda : dove devo creare un'istanza per gli oggetti del repository utilizzati nei servizi di dominio?