Aprenda de uma vez por todas o Repository Pattern e suas formas na prática com Laravel e RabbitMQ.

Поделиться
HTML-код
  • Опубликовано: 3 фев 2025

Комментарии • 67

  • @danielneto6619
    @danielneto6619 2 месяца назад +1

    Finalmente uma abordagem lúcida sobre repositórios no Laravel.

    • @DifferDev
      @DifferDev  2 месяца назад

      Agradeço o comentário Daniel, grande abraço!

  • @claytons.4845
    @claytons.4845 Год назад +6

    Confesso que por um tempo utilizei o Repository apenas como proxy mas depois que comecei a estudar mais SOLID, DDD e arquitetura limpa a chave virou principalmente após entender a Inversão de Injeção de dependência a partir dai comecei a buscar a implementação de um Repository mais Genérico isso abriu portas para diversas possibilidades, gosto muito desta abordagem do RepositoryStrategy chamo carinhosamente e "plug-play". Minha sugestão é o Command Pattern sei que é um pattern relativamente simples mas recentemente vi uma implementação utilizando __invoke para chamar usecases dentro de uma estrutura Clean Arch achei sensacional estou estudando o máximo de possibilidades que esse padrão pode oferecer.
    Leo muito obrigado por compartilhar esse conteúdo maravilhoso isso me deixa ansioso por muito mais. kkkk
    Abraço até o próximo.

    • @DifferDev
      @DifferDev  Год назад +1

      Boa Clayton, obrigado pelo comentário, gosto também do conceito de UseCase como um Command patter, usando __invoke, gosto desta abordagem pois a classe do use case fica focada na ação, por outro lado temos aquela problemática de quanto maior a aplicação maior serão os use cases e acaba ficando repetitivo ficar criando os commands, mas da pra trabalhar centralização e abstração.
      Valeu um abraço.

  • @alysonhenrique8088
    @alysonhenrique8088 Год назад +4

    Excelente conteúdo! Nem dá pra ficar aqui escrevendo que demora a postar, porque quando posta, sempre são conteúdos profundos. Que realmente demandam tempo.

    • @DifferDev
      @DifferDev  Год назад +1

      Agradeço demais a compreensão Alyson, não é fácil, ainda mais quando quero um conteúdo bom e tentando ao máximo ser claro e didático.
      Obrigado pelas palavras e um abraço!

  • @Kacatkun
    @Kacatkun Год назад +4

    Muito bom hehe Repository sempre é um tema que mexe com o animo da galera, principalmente de quem usa Laravel. Cara, gostei muito de como você abordou o tema fugindo do clichê de que o "Repository serve para abstrair o uso de ORMs", e que facilitaria em uma possível troca de ORM no futuro (coisa que nunca vi ninguém fazer). O uso de Repository faz muito mais sentido nesse contexto de uso fila/serviço de mensageria usando Specific Repository para desafogar operações custosas em monolitos. Show de bola. Videozão completo para começar o domingo.

    • @DifferDev
      @DifferDev  Год назад +1

      Obrigado Cássio pelo comentário, que bom que curtiu! exatamente, o conceito Repository até em sua essência não se trata só de abstrair ORMs, alias tem projetos que o pessoal até evita o uso de ORM, valeu um abraço!

  • @sahdoio
    @sahdoio 3 месяца назад +1

    Interessante essa implementação de Repository. Vou brincar um pouco com ela. Muito bacana o vídeo. 👏🏻👏🏻.

    • @DifferDev
      @DifferDev  2 месяца назад

      Obrigado Lucas, fico feliz que tenha gostado e que possa ser útil para seus projetos!

  • @wellingtonnascimento3853
    @wellingtonnascimento3853 Год назад +3

    ficou excelente esse conteudo ❤

    • @DifferDev
      @DifferDev  Год назад +1

      Valeu demais pelo comentário Wellington! um abraço!

  • @ryanfelipe7040
    @ryanfelipe7040 Год назад +3

    Antes de ver eu já curti. Ja sei que vai vir conteúdo top.

    • @DifferDev
      @DifferDev  Год назад +1

      Muito grato Ryan, valeu demais pela força e pelo comentário, um abraço!

  • @LuisFelipe-ul3hk
    @LuisFelipe-ul3hk Год назад +3

    Conteúdo de muita qualidade muito bom mesmo.

    • @DifferDev
      @DifferDev  Год назад +1

      Muito obrigado Luis Felipe, fico feliz que gostou da aula, um abraço!

  • @gssj-o8p
    @gssj-o8p Год назад +3

    Agora sim o domingo tá completo!

    • @DifferDev
      @DifferDev  Год назад +1

      Valeu Guilherme que bom que alegrou seu domingo hehehe, um abraço.

  • @ClaudineyPerbony
    @ClaudineyPerbony Год назад +2

    Parabéns , TOP, TOP! Lindão o canal, só á agradecer.

    • @DifferDev
      @DifferDev  Год назад +1

      Obrigado pelo comentário, que show que gostou, um abraço!

  • @jhonathamatias6455
    @jhonathamatias6455 Год назад +2

    Parabéns Léo pela aula! Impossível não entender com essa explicação.

  • @danielevangelista2302
    @danielevangelista2302 Год назад +3

    Mais um video de qualidade!!!!! Ta sumido rsrsrsrsrss

    • @DifferDev
      @DifferDev  Год назад +1

      Valeu Daniel obrigado demais um abraço, vou ver se apareço mais, hehehe!

  • @dersonsena-cabradev
    @dersonsena-cabradev Год назад +3

    Que vídeo sensacional, muito bom vídeo! Nem percebi os quase 50 minutos de vídeo de tão bom que ficou, parabéns Leo.

    • @DifferDev
      @DifferDev  Год назад +1

      Opa valeu demais pelo comentário Kilderson, um abraço!

  •  Год назад +3

    Excelente, parabéns

    • @DifferDev
      @DifferDev  Год назад +1

      Obrigado Jefferson um abraço!

  • @BrunoMotaL
    @BrunoMotaL Год назад +3

    Fala mestre!
    Conteúdo top🤘🏻

    • @DifferDev
      @DifferDev  Год назад +1

      Valeu bruno, agradeço demais, um abraço.

  • @ricardokovalskicruz9662
    @ricardokovalskicruz9662 Год назад +2

    Sensacional Leonardo. Muito bom este material. Parabéns.

    • @DifferDev
      @DifferDev  Год назад +1

      Valeu demais Ricardo! grande abraço!

  • @mmfjunior1
    @mmfjunior1 Год назад +3

    Caraca! Só agradecer mesmo, Leonardo! Muito obrigado!

    • @DifferDev
      @DifferDev  Год назад +2

      Obrigado Mario, um grande abraço!

  • @rafael98php
    @rafael98php Год назад +3

    Conteúdo top mestre!

    • @DifferDev
      @DifferDev  Год назад +1

      Obrigado demais pelo comentário, um abraço!

  • @matheusfilho_dev
    @matheusfilho_dev Год назад +3

    Top demais

    • @DifferDev
      @DifferDev  Год назад +1

      Valeu Matheus um abraço!

  • @Ravekx
    @Ravekx Год назад +3

    Show

    • @DifferDev
      @DifferDev  Год назад +1

      Valeu Alex um abraço!

  • @marcuspmd
    @marcuspmd Год назад +3

    Top, Parabens

    • @DifferDev
      @DifferDev  Год назад +1

      Obrigado Marcus um abraço!

  • @AdrianoAraujoRosa
    @AdrianoAraujoRosa Год назад +3

    Parabéns pelo ótimo conteúdo!
    Queria entender melhor sobre como poderíamos fazer uma implementação do Repository baseado em listagem (coleções) usando paginação e filtragem.

    • @DifferDev
      @DifferDev  Год назад +2

      Obrigado pelo comentário Adriano, é algo que penso em fazer no futuro, mas teria que ser algo com uma base já pronta de código, bom saber que achou interessante, mas é um conteúdo único, quem sabe em breve eu lance algo, valeu abraço!

  • @Roinuj16
    @Roinuj16 Год назад +3

    Muito bom, Parabéns!!!

    • @DifferDev
      @DifferDev  Год назад +2

      Obrigado Edson um abraço!

  • @benyallan
    @benyallan Год назад +3

    Eu estava esperando muito por esse vídeo

    • @DifferDev
      @DifferDev  Год назад +1

      Opa que legal, espero que tenha gostado, um abraço!

  • @JuniorSux
    @JuniorSux Год назад +3

    Sensacional o conteúdo e a explicação. Didática muito boa. Eu gostaria muito que houvesse a inclusão de temas como SOLID e Clean Code dentro desse assunto, pra que a gente consiga enxergar o melhor dos mundos sendo aplicado. Além disso, pra fechar com chave ouro, claro, não poderia faltar um TDD. Vale a pena um próximo vídeo com esses conteúdos? Abração!

    • @DifferDev
      @DifferDev  Год назад +3

      Obrigado pelo comentario Edson, bem possível que posteriormente eu grave vídeos sobre esses temas, lhe agradeco pela sugestão um abraço!

  • @Adahodpf
    @Adahodpf 9 месяцев назад +3

    meu nome é Eneias...o dev!

  • @TheBackBlood
    @TheBackBlood Год назад +3

    Quando vai rolar aquele curso estilo Road to hero ?

    • @DifferDev
      @DifferDev  Год назад +1

      Obrigado pelo comentário Noah, opa em breve sai algo, fique de olho, vou postar por aqui, valeu pelo apoio, um abraço.

  • @thiagomartins8977
    @thiagomartins8977 Год назад +3

    Toppp demais!!!Muito obrigado pelo conteudo!!! Atualmente tenho tentado fazer dessa forma, crio um contrato (interface) e em AppServiceProvider faco o bind desse interface com o repository em questao (produto, usuario) e crio um repository padrao so pra fazer a injecao de dependencia, e no Service faco a chamada do contrato, acha que eh uma boa dessa forma ?

    • @DifferDev
      @DifferDev  Год назад +1

      Então você precisa ver se usando somente repositório específico é bom ou não para seu projeto, se você ter que criar repositório para tudo que é acesso a dados, veja se não está criando repetições nos seus repositório e se possível troque por um repo genérico, por isso que tudo depende da necessidade, se for microsserviço daí é comum mesmo.

  • @luizmagao
    @luizmagao Год назад +3

    Amigo assisto suas aulas, e quero aqui pedir sua ajuda em como conseguir usar tests, me adaptar em tests nos meus projetos.

    • @DifferDev
      @DifferDev  Год назад +1

      Obrigado pela mensagem Luiz, para começar a usar testes você precisa aprender sobre o PHPUnit em seguida sobre testes unitários, você precisa estudar mocks e TDD e começar sempre seus projetos com testes, assim se habitua a usar testes.

  • @nicolasromero6144
    @nicolasromero6144 Год назад +1

    Massa o conteúdo, obrigado por compartilhar, vc poderia fazer um caso de uso de rabbitmq ou Kafka? Tipo seu uso na vida real ? Ou depois de estar na fila quais são os usos de usar essas tecnologias??

    • @DifferDev
      @DifferDev  Год назад +1

      Obrigado pelo comentário Nicolás! Boa sugestão é algo que está nos planos de lançar um conteúdo, quem sabe algo com Kafka que tem pouco por aí com PHP

    • @JoaoPedro-uw8nz
      @JoaoPedro-uw8nz Год назад +1

      O seu conteúdo sobre php é um dos mais completos e avançados que já encontrei, pagaria tranquilamente por um curso com a qualidade dos seus videos.@@DifferDev

    • @DifferDev
      @DifferDev  Год назад

      @@JoaoPedro-uw8nz muito obrigado pelas palavras João em breve vou lançar um curso, se quiser se inscrever aqui te comunico assim que saír.

  • @patrickbarboza7575
    @patrickbarboza7575 Год назад +2

    Se eu quisesse usar o product_id para por exemplo criar uma relação, como eu faria? Retornaria um domínio no método save ao invés de bool?

    • @DifferDev
      @DifferDev  Год назад +1

      Obrigado pelo comentário Patrick, não, o método save tem o objetivo somente de persistir dados, o que você pode é ter uma implementação de DataMapping dentro do seu repository para que faça o mapeamento do seu domínio e resolva uma relação, assim no objeto passado como referencia você injeta a relação com um domínio e após o flush, o objeto passado como armazenamento pode estar com seu pai, porém isso só sera viável em um comportamento para banco de dados, no caso de fila é preciso o mecanismo de busca separadamenta para retornar um elemento da relação, e como precisa-se de flexibilidade o relacionamento não deve ser automatizado, a não ser que se use um mecanismo de mapeamento especialista em determinada infra.

  • @hisok4dev192
    @hisok4dev192 Год назад +1

    Poderia me falar o nome da extensão rest e da extensão de fazer consultas no banco que usou no vídeo? Ambas do vscode

    • @DifferDev
      @DifferDev  Год назад

      Opa obrigado pelo comentário, um é o "REST Client" do Huachao Mao, e o outro é o "Mysql" do Jun Han

  • @alysonhenrique8088
    @alysonhenrique8088 Год назад +1

    Fala. Léo! Eu implementei essa solução em um dos meus projetos de estudo. Mas tenho uma dúvida quando a singularidade dos repository.
    Na empresa onde trabalho, esse padrão foi implementado do jeito errado que você falou, cada model tem seu repository, e usamos eles para além do crud, fazer também consultas específicas para um model.
    Esse tipo de implementação está equivocada? Digo: uma consulta mais específica deveria ser um método privado do próprio model, que poderíamos acessar através desse padrão que você ensinou?
    Exemplo: Uma consulta que retorna um array associativo onde a chave é o nome do cliente, e o valor sua data de aniversário. Onde trabalho, implementamos isso dentro do repository referente ao model, com o método: findCustomerBirthdayToForm(). Mas faria mais sentido que esse método pertencesse ao próprio model?
    Sou iniciante, apenas um ano de xp, mas me veio essa dúvida. Espero não estar incomodando! hehehe
    Se eu não tiver sido claro, comentem aqui! Valeu, povo!

    • @DifferDev
      @DifferDev  Год назад +1

      Opa Alyson, obrigado pelo comentário, excelente dúvida, na verdade não está errado este modelo da sua empresa, o ponto a se perguntar é se o repository será papel de ator da mudança de armazenamento, ou seja, fazer uma troca de implementação de um DB para uma fila por exemplo.
      Então o que eu disse foi, se não houver esse objetivo, você pode trabalhar com Repository para cada model sim, e é até mais interessante, pois você não coloca a responsabilidade de query builder nos Models do Laravel, colando lá ocasionará muita dependência ao ORM do Laravel, a ideia dos Repositories é não implementar regras de persistencia/busca nos Models diretamente, mas sim na camada de infraestrutura(repository), assim você ganha mais mobilidade.
      Por ultimo se você precisar de recursos mais sofisticados como filtros, paginação, ordenação e limitação, dai aconselho trabalhar um modelo de Specification Pattern e Repository Genérico e implementado-o nos repositórios específicos, exatamente para abstrair esses recursos e conseguir adaptar(Adapter) para outras tecnologias como filas, search engine ou queues sem muito esforço.
      Como falei no vídeo, errado é ter repositorios vazios(anêmicos) que só recebem Models e não fazem nada demais a não ser chamar os métodos dos models, isso sim é uma implementação sem benefício, daí melhor usar as Models diretamente(o que evito ao máximo para aplicações robustas).

    • @alysonhenrique8088
      @alysonhenrique8088 Год назад +1

      @@DifferDev Show de bola, Léo! Sempre esmiuçando tudo! Valeu Pelas dicas!