1
resposta

Algumas dúvidas sobre repositórios

Fala, Vini! Satisfação, meu amigo!

Rapaz, eu tenho algumas dúvidas sobre repositórios. São as seguintes:

  • Repositórios e interface são sinônimos?
  • Quando se cria um repositório/interface é definido apenas os nomes dos métodos, parâmetros e o tipo de retorno, correto? Sem o escopo?

Desde já muito grato pelo retorno.

1 resposta

Olá! Não sou o Vini Dias do curso, mas acho que posso te ajudar com suas dúvidas :)

Repositórios e interface são sinônimos?

  • Não. Um repositório é um padrão de projeto que fornece uma interface entre a camada de domínio e a camada de dados do seu projeto. Já a interface, em termos de programação orientada a objetos, é um contrato que define quais métodos uma classe deve implementar.

Por exemplo, no código que você está estudando, StudentRepository é uma interface que define os métodos que qualquer repositório de estudantes deve implementar. A classe PdoStudentRepository implementa essa interface, ou seja, ela fornece uma implementação concreta dos métodos definidos na interface StudentRepository.

Qual a vantagem disso? Imagine que, dentro da empresa onde você trabalha, surge uma nova necessidade de uso de uma biblioteca diferente da PDO. Nesse cenário, a vantagem de usar a interface StudentRepository torna-se evidente. Ao usar essa interface, tudo o que você precisaria fazer é implementar uma nova lógica para buscar ou persistir dados, sem a necessidade de modificar o código de toda a aplicação.

Quando se cria um repositório/interface é definido apenas os nomes dos métodos, parâmetros e o tipo de retorno, correto? Sem o escopo?

  • Sim! Quando você define uma interface, você está definindo os nomes dos métodos, parâmetros e tipos de retorno, mas não a implementação dos métodos (o escopo). A implementação dos métodos é feita nas classes que implementam a interface.

Por exemplo, a interface StudentRepository pode ter um método save(Student $student): bool;. A classe PdoStudentRepository que implementa essa interface deve fornecer a implementação desse método, ou seja, o código que será executado quando o método save for chamado.

Espero ter ajudado e bons estudos!