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!