Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Interface de repositórios

Oi mestre,

Eu tendo outras entidades no projeto faria sentido eu quebrar essa interface de estudantes em duas? Por exemplo, uma interface mais genérica chamada Repository onde deve ter métodos comuns a todos repositórios como salvar, deletar, etc e outra interface chamada StudentRepository(como no projeto) contendo os métodos específicos a estudantes e extendendo a interface Repository? Ou estaria viajando demais na maionese?

5 respostas
solução!

Fala, Diego.

Até faria sentido, mas aí sua interface definiria que tipo de parâmetro pra receber no método salvar, por exemplo?

Oi mestre,

Então, eu vi esse probleminha também rsrs, teria que ficar sem tipagem. Só achei interessante ter uma interface mais segregada caso tivesse mais entidades, talvez fosse útil em algum cenário definir uma interface em comum para repositórios, mas como sempre, pode ser apenas besteira minha.

Para ser mais sincero, eu perguntei isso por que eu fiz algumas alterações nos exemplos dados no curso:

1- criei uma abstract class PdoRepository pensando em reunir algumas operações em comum em possíveis repositórios em PDO, como por exemplo realizar o bind de valores de maneira automática.

2- Coloquei o método de hidratação nessa nova classe abstrata e fiz uma abstração no método removendo a parte em que ele instancia os estudantes por um callable, assim cada repositório só vai ter a responsabiliade de implementar um método que retorna um callable onde esse callable diz como instanciar a sua entidade específica.

Fugindo um pouco do assunto: Ontem a noite estava lendo um artigo meio denso em PHP do nikic e quem encontro nos comentários? O senhor rsrs

Pela descrição, curti suas alterações no projeto. Parece bem legal. Já colocou no Github?

Voltando as interfaces, não faria por perder tipagem. Aí é um trade off. Não tem certo ou errado.

Opa, maneiro. Rsrsrsrs que artigo foi esse?

O artigo foi "Understanding PHP's internal array implementation (PHP's Source Code for PHP Developers - Part 4) ", achei curioso a coincidência e vi que estava pegando boas referências ao ter te visto. Acabei encontrando esses artigos por que estou lendo um livro sobre estrutura de dados em PHP.

Sobre as alterações eu vou fazer o último capítulo do curso hoje e possa ser que eu tenha alterar algo que já alterei, o que acho bem provável, ao finalizar eu subo para o git.

Uma última dúvida conceitual: Isso que estamos fazendo se assemelha a um data mapper, onde os repositórios estão fazendo a função do mapper? Ou não tem nada a ver?

Se assemelha e muito sim, Diego.

Existem algumas diferenças que pra ser honesto eu não me lembro (há muitos anos não leio sobre data mapper a fundo), mas por alto, a utilização é igual.