Тёмный

Por que eu não gosto de Laravel - Conhecendo padrões de ORM | Dias de Dev 

Dias de Dev
Подписаться 34 тыс.
Просмотров 25 тыс.
50% 1

Laravel é o maior framework PHP da atualidade e sem dúvida é uma baita ferramenta, mas quem me conhece melhor sabe que eu não sou seu maior fã. Neste vídeo eu explico o principal motivo para eu não gostar do framework Laravel.
É importante deixar claro que eu reconheço o papel do framework na comunidade e sei que ele vem fazendo um ótimo trabalho. Eu só não concordo com todas as decisões tomadas pelos criadores, o que não quer dizer que eu esteja 100% certo ou que o framework seja ruim.
Tanto é verdade que acredito que o framework tem seu papel que eu possuo cursos gravados sobre #Laravel (e vou regravá-los nas versões mais recentes do framework). Se quiser conferir, aqui tem 15% de desconto para assinar a Alura:
tidd.ly/43UfATs
Minha maior objeção contra o framework é sobre a escolha do padrão #ActiveRecord do #Eloquent (ORM do Laravel). Este padrão te deixa mais dependente do framework, inclusive no que chamamos de "camada de domínio". É um problema que pode sim ser contornado modificando um pouco a arquitetura, mas eu prefiro não ter esse problema utilizando #Symfony, por exemplo, que usa o #Doctrine, que por sua vez usa o padrão Data Mapper.
PS.: Eu sei que minha pronúncia de PearDB (e de tudo relacionado ao Pear) está incorreta. É um hábito que já está tão enraizado que acho pouco provavel que eu consiga mudar. rsrsrs
----------------------------------
Para mais conteúdos sobre boas práticas de programação, testes, arquitetura de software e tudo que há de bom, não se esqueça de se inscrever e ativar o sininho para receber notificações.
Para entrar em contato:
Telegram: t.me/diasdedev
Twitter: / cviniciussdias
LinkedIn: / cviniciussdias
GitHub: github.com/CVi...

Опубликовано:

 

15 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 341   
@JuvenalMuniz
@JuvenalMuniz 2 года назад
Parece que há uma confusão entre o que o framework te oferece e aquilo que você deseja para o seu domínio. Laravel apenas te oferece um modelo de persistência. Você continua livre para implementar teu modelo de domínio como quiser (ex. objetos PHP simples). O core da tua solução será independente de toda a infraestrutura fornecida pelo Laravel. Se o framework utiliza active record ou data mappers tanto faz em relação ao seu domínio. Nesse sentido não tem como afirmar que o Laravel é ruim só por ter escolhido active record como forma de implementar o modelo de persistência.
@DiasDeDev
@DiasDeDev 2 года назад
Juvenal, é sim possível modelarmos nossa arquitetura para termos a "model" na camada de infra e não no domínio, sem dúvidas. Mas o ponto é: O data mapper já te leva pra esse caminho, enquanto o active record que guia para um caminho mais acoplado, entende? Isso é um problema principalmente com iniciantes que ainda não tiveram a oportunidade de estudar sobre arquitetura. O ponto do vídeo é justamente mostrar que a abordagem "padrão" possui sim desvantagens. :-)
@gabrielgomesch
@gabrielgomesch 2 года назад
@@DiasDeDev no meu emprego atual estamos utilizando uma arquitetura mais voltada a domínio (existem 4 camadas sendo domínio uma delas e nessa camada ficam as entidades e objetos de valor que são POPO) porém por conta de algumas questões estruturais, ainda estamos usando o eloquent pra mapear os dados do banco. ai na prática estamos tendo q implementar uma estrutura pura de domínio e a mesma estrutura no lado da persistência como uma model do eloquent. ou seja, estamos duplicamdo mt código pra conseguir desacoplar o domínio complexo do nosso negócio do banco de dados. ja faz algumas sprints q eu venho tentando introduzir o doctrine no projeto pra gente evitar a duplicidade e garantir a camada de dominio isolada. nas pocs q eu venho fazendo parece bem promissor . esse é o problema de usar a ferramenta errada pro trabalho errado. na minha visão, se vc resolve usar o eloquent, vc tem que aceitar os drawbacks de ter uma entidade de domínio c responsabilidade dupla, pra justamente ter a vantagem de acelerar o ciclo de desenvolvimento. agora se vc quer desde o começo ter uma arquitetura toda desacoplada, o eloquent se torna um pé no saco. mt mais fácil usar um ORM como o doctrine, mesmo q a princípio ele seja bem mais complexo de configurar
@niltonduarte3531
@niltonduarte3531 Год назад
O que o @DiasdeDev quis dizer foi que o fato de uma classe minha precisar estender uma classe do laravel é o motivo do acoplamento visto que os métodos que eu vou precisar utilizar não são definidos na minha classe sim fornecidos pelo framework. Assim, ao executar as operações de CRUD eu vou estar usando apenas os métodos herdados dele. Esse é um cenário perigoso porque se no futuro eu precisar abandonar o framework, eu vou ter que sair abrindo e editando vários arquivos para substituir as chamadas de métodos do eloquente e a manutenção fica muito trabalhosa e maçante e pode introduzir bugs ou comportamentos inesperados no processo. Uma possível abordagem ideal seria dividir as responsabilidades de representar um modelo do meu negócio e persistir os seus dados entre classes diferentes sem que seja necessário uma herança. Assim, se amanhã eu tiver que me livrar do framework, nenhuma classe customizada do meu domínio terá uma dependência, um acoplamento ao framework e esse desligamento pode ser um pouco mais tranquilo.
@thiagolavras9933
@thiagolavras9933 Год назад
jantou
@byebyegriefer
@byebyegriefer Месяц назад
@@DiasDeDev sla, tudo tem lado positivo e negativo, cada um escolheo o lado que olha kkkk
@cassioalmeidaa
@cassioalmeidaa 2 года назад
Trabalho com Laravel desde a versão 3. Me ajudou muito tanto profissionalmente/financeiramente, quanto em ser um desenvolvedor melhor. Apesar da blasfemia do senhor, mais um conteúdo top e bem argumentado! Hahaha - De fato, esse é um ponto que eu também critico, e acho que a maturidade e senioridade residem, mais uma vez, nos fundamentos, depois na ferramenta. O Laravel ( e nenhum outro framework ) te limita se você souber os fundamentos - nada impede de usar o repository pattern ou um data mapper. Inclusive, você pode usar o Doctrine com Laravel - fica a dica para os novatos que já chegaram aqui para defender ferramenta, isso muda pessoal, vai e vem, se atentem aos princípios e conceitos...Continue com o canal e conteúdo, manda muito bem!
@DiasDeDev
@DiasDeDev 2 года назад
Pois é, alternativas sempre existem. Lá no curso da Alura eu inclusive cito o projeto Laravel Doctrine. :-D
@Lucas-mu5no
@Lucas-mu5no 2 года назад
É, já usei o Doctrine tb, mas prefiro a simplicidade do Eloquent mesmo. Gasto mais tempo com o que importa que é o negócio xD
@denisalustau
@denisalustau 2 года назад
falou tudo!
@igorsantos07
@igorsantos07 2 года назад
@@DiasDeDev ué, cita no curso da Alura mas no vídeo em que o único assunto é a polêmica de db vc não cita? foi só pra polemizar mesmo, então? hahaha
@swplogic4158
@swplogic4158 Год назад
Põe blasfemia nisso!
@nunomaduro
@nunomaduro 2 года назад
👀
@GustavoWeb
@GustavoWeb 2 года назад
👀
@AlessandroFeitozaComPutaria
@AlessandroFeitozaComPutaria 2 года назад
👀
@DiasDeDev
@DiasDeDev 2 года назад
👀
@jeffegiovani
@jeffegiovani 2 года назад
👀
@_frankrocha
@_frankrocha 2 года назад
👀
@FullCycle
@FullCycle 2 года назад
Apesar de não curtir tb Active Record, temos que entender que o "Model" do Active Record não é a sua entidade, e sim uma classe para falar com o Banco, diferente de seu domínio onde tem suas regras de negócio (agregados, entidades, vos, etc) . O maior problema é quando você coloca regras de negócio no model (que não deve ter essa responsabildiade). Model Entidade. Model => Banco. Entidade => Domínio. Se fizer esse ajuste, tudo muda completamente. Valeu pelo vídeo. Ganhou mais um inscrito ;)
@DiasDeDev
@DiasDeDev 2 года назад
Perfeita colocação! O Model realmente não deveria ser sua entidade. É algo que moraria na camada de infraestrutura. Mas infelizmente, na prática a teoria é outra, né!? Rsrsrs Muito obrigado pelo feedback! 🤩
@sidneycruvinel1296
@sidneycruvinel1296 Год назад
Muito bom Vinicius! Programo com o Symfony a anos e concordo com os pontos apresentados. Uma coisa que também me incomoda no Laravel são os métodos mágicos. Parabéns pelo excelente vídeo!
@DiasDeDev
@DiasDeDev Год назад
Sim. O abuso de métodos mágicos e métodos estáticos me incomoda também. Mas não tanto quanto o uso de Active Record. rsrsrs
@DanielLoureiro82
@DanielLoureiro82 10 месяцев назад
Bem argumentado, mas alguns pontos: - O trabalho para substituir o Doctrine numa aplicação Symphony, é o mesmo para substituir o Eloquent numa aplicação Laravel - O Eloquent, apesar de ser desenvolvido pela mesma equipe do Laravel, não é acomplado ao Laravel. Ele é uma biblioteca separada e independente. - Por ser uma biblioteca independente, vc pode usar o Eloquent em aplicações não-Laravel. - Exemplo: diversos plugins WordPress que mantenho. Quem instala meus plugins, instala como se fosse outro plugin qualquer. E é muito fácil mapear os Models com as tabelas do WordPress. - O Eloquent não é acoplado ao banco de dados. Você pode usar em qualquer base de dados existente. - Exemplo 1: Leio e escrevo em tabelas core do WordPress com o Eloquent - Exemplo2 : Uso o Eloquent para mapear fontes de dados que não são banco de dados relacionais. Um exemplo é um data warehouse que me fornece uma API para ler dados. Isso me fornece uma abstração e maior facilidade em organizar o código. - Você também pode usar outros ORM no Laravel, como por exemplo, o próprio Doctrine. E isso é feito facilmente, já que o Laravel não depende do Eloquent - Se o Laravel parar de desenvolver o Eloquent, você pode facilmente substituir por classes próprias (eu já fiz isso antes) usando o Doctrine por baixo dos panos, por exemplo - Sobre o acomplamento de domínio, aí é uma questão mais de como você estrutura seu código. Eu por exemplo mantenho o código front-end em um projeto separado, uso uma organização em DDD (domain-driven design), minhas regras de negócio estão em Actions e não no Model, uso DTOs para o fluxo de dados ao invés de tê-los no Model, etc. No fim das contas acredito ser só uma questão de gosto pessoal mesmo. Mas é importante seguir um framework, mesmo não gostando de alguns detalhes. É mais sobre ter uma linguagem comum com outros desenvolvedores do que o que é melhor do ponto de vista técnico.
@adrianoprogramador
@adrianoprogramador Месяц назад
🤗
@dantondelima9934
@dantondelima9934 2 года назад
Conteúdo sempre muito bom, você tem sido uma grande referência pra mim, obrigado!
@DiasDeDev
@DiasDeDev 2 года назад
Opa, Danton. Fico muito feliz que esteja curtindo. Obrigado pelo feedback.
@rotognin
@rotognin 2 года назад
Embora eu esteja estudando laravel, achei muito boa a sua explicação! Sempre me faz ver coisas a mais que eu não conhecia. Eu gostaria de ver a sua opinião sobre mais coisas que você não gosta no laravel. Acredito que me seria muito útil para entender melhor mais coisas e abrir possibilidades maiores de aprendizado! Valeu Vinícius
@DiasDeDev
@DiasDeDev 2 года назад
Opa, Rodrigo. O abuso de métodos mágicos e estáticos é outra coisa que me incomoda. Isso incentiva mais acoplamento e em ambientes bem testados, gera um maior número de testes de integração e menor de testes de unidade, invertendo a famosa pirâmide de testes. Mas assim como a parte do ORM, você consegue "se livrar" dos métodos estáticos. Mas eu prefiro um framework que me incentive usar o jeito mais desacoplado do que um onde preciso ter trabalho extra para desacoplar.
@rayanemtenorio
@rayanemtenorio 2 года назад
Adorei o vídeo! Confesso que sou apaixonada pelo Laravel, mas venho tentando desapegar um pouquinho e aprendendo a não ficar tão dependente do framework. Gosto muito da sua didática, Vinícius. Grande referência para mim com o PHP!
@DiasDeDev
@DiasDeDev 2 года назад
Muito obrigado, Rayane. Não tem nada de errado em gostar de algum framework, mas o ideal é saber outros e também conseguir se virar sem nenhum. :-D
@joseniltonleiteduarte7843
@joseniltonleiteduarte7843 2 года назад
Entendi. Você não gosta de frameworks e bibliotecas que usam o padrão active record. Mas e se eu desenvolver um componente que usa esse padrão de forma nativa na minha aplicação? As minhas próprias classes seguindo o padrão active recorde e os modelos estendendo essas classes. O que você diria?
@DiasDeDev
@DiasDeDev 2 года назад
Seu domínio continuaria conhecendo detalhes de infraestrutura. Esse é o problema.
@matheuscamarques
@matheuscamarques 2 года назад
Vídeo bem bacana, mas são argumentos que vc podia usar em 2018/2019. O Framework evolui muito pra desacoplar muitas dependências. Vale a pena dar uma revisada to gostando bastante.
@DiasDeDev
@DiasDeDev 2 года назад
A dependência da infraestrutura no domínio ao usar Active Record nunca vai mudar porque isso não é um detalhe de framework. É um padrão de projeto. E esse padrão (como todos os outros) possui problemas. Esses problemas que foram apontados. Os problemas continuam existindo agora em 2022. :-)
@igorsantos07
@igorsantos07 2 года назад
@@DiasDeDev pois é, mas o problema é a decisão de ir com o AR, não é o framework em si. Acredito que o ponto que você gostaria de levantar é que o Symfony não decide o ORM pra você, como o Laravel "sugere fortemente" (risos risos). Se o problema "não é um detalhe do framework", pq o título do vídeo é "pq eu não gosto do Laravel / Laravel é ruim?"?
@raulinomoresco
@raulinomoresco Год назад
Parabéns pelo vídeo Vinícius, enriquecedor como sempre! Quando puder fale um pouco mais sobre o framework Laminas se possível. Agradecido, sucesso.
@DaniloAlmeida-s9x
@DaniloAlmeida-s9x 6 месяцев назад
Tem gente chorando hoje com as mudanças do laravel, acho que eles derem um tiro no pé com essa versão 11
@MEGAPIXTV
@MEGAPIXTV Год назад
MVC é vida!
@CledilsonNascimento
@CledilsonNascimento 2 года назад
Também tenho meus receios com os acoplamentos do Laravel, e também essas mágicas que são complicadas pra resolver bugs quando aparecem. Tenho usado ele pra projetos simples. Ótimo vídeo!
@DiasDeDev
@DiasDeDev 2 года назад
Pois é. Tem alguns pontos a serem observados. :-)
@thalesbarbosa2027
@thalesbarbosa2027 Год назад
Eu uso o Laravel a 5 anos e adoro o framework por todas as facilidadades e a documentação é bem facil de encontrar. Porem nos ultimos anos como tenho feito projetos grandes e que demandam muita manutenção e que a reutilização é necessária. Percebi que o actived record não é uma abordagem para projetos grandes e que irão durar muito tempo. Pois se voce não saber criar bem sua arquitetura com um clean architecture ou ddd, voce vai ser embolar e vai chegar um ponto que a manutenção será extremamente complicada. Um problema do active record que eu acho que vem a falhar do paradigma de ornetação a objetos: ENCAPSULAMENTO.
@DiasDeDev
@DiasDeDev Год назад
Exatamente, Thales! :-D
@mateusguimaraes-pt1250
@mateusguimaraes-pt1250 2 года назад
Bom, a parte do AR eu entendo e acho que é questão de opinião mesmo - o que eu não concordo é com a parte de que AR é problemático para aplicações que precisam durar muito tempo: praticamente todos os apps gigantes escritos em Rails usam AR. A parte de sair do Laravel também me parece irreal - mesmo que o Laravel acabasse por algum motivo, existiriam forks, ou você poderia simplesmente importar o código do framework para o seu projeto. Consigo entender o “problema” do acoplamento, mas isso é genérico e aconteceria também se você tivesse uma classe que usasse o Request do Symfony, por exemplo. Pelo que eu entendi o motivo de você não gostar do Laravel na verdade é o Eloquent… como você se sentiria num projeto Laravel com Doctrine, por exemplo? Abs
@DiasDeDev
@DiasDeDev 2 года назад
Mateus, várias aplicações rodarem em Rails não torna a decisão arquitetural menos perigosa. Vários projetos pensavam o mesmo e ficaram presos no CodeIgniter 2. Sobre depender do Request do symfony, acho que você não pegou o ponto. Seu código de domínio não deve depender do framework. Quem acessa um objeto de request (que está na camada de infra) é o controller (que também está na infra). Acoplamento não é ruim por si só. O perigoso é o tipo de acoplamento. :-)
@mateusguimaraes-pt1250
@mateusguimaraes-pt1250 2 года назад
@@DiasDeDev Realmente o exemplo do Request nao foi dos melhores, mas o ponto é que usando um framework é comum depender dele, e concordo que o Laravel é mais propicio a isso, apesar de existir diversas formas de evitar isso. Mas novamente, o video mais parece uma crítica ao AR do que ao Laravel em si. Nao quero parecer agressivo com o comentario, estou genuinamente curioso do que voce acharia de um projeto com Doctrine ao inves do Eloquent. Eu nao peguei a epoca do CI mas nao consigo imaginar de que forma alguém ficaria totalmente preso ao Laravel. Se vc quiser elaborar estou interessado abs!
@DiasDeDev
@DiasDeDev 2 года назад
Eu entendo seu ponto. Sem dúvida vamos depender do framework ao utilizá-lo. O problema é só nosso código de domínio depender do framework. Isso que deve ser evitado. Agora ter código de infraestrutura usando o framework é pra lá de comum. :-) E usar o Doctrine no Laravel é sim uma possibilidade interessante, mas eu nunca usei. Teria que testar pra ver se a integração é legal ou se tem algum problema. Por não ser "oficial", fico com um pé atrás. Eu continuaria dando preferência pra um framework que já tem uma filosofia mais desacoplada mesmo como Symfony ou Laminas. :-D
@begonegeek
@begonegeek Год назад
o que eu gosto mesmo é do CakePHP, acho o Laravel MUITO modinha e é bem complicado ao contrário do CakePHP que na minha opinião deveria ser o queridinho igual o Python é hoje em dia por exemplo.
@DiasDeDev
@DiasDeDev Год назад
O CakePHP e o Laravel são MUITO semelhantes. O que você prefere no Cake em relação ao Laravel?
@begonegeek
@begonegeek Год назад
@@DiasDeDev bom particulamente é muito fácil entender a estrutura a curva de aprendizagem é melhor do que laravel, tem menos plugin tornando o mais leve "em alguns caso é horrivel tipo consulta com MSSQL" mas postgres, mysql é muito veloz.. e o cake bake dele acho melhor de usar até por que ele gera menos sujeira no código em sí, acredito que é excelente até pra quem tá começando, eu fui mexer no laravel parecia até que eu programava em C# kkkkk, mas pode ser gosto isso e há rotas cara, as rotas do cakephp é automático, se quiser mudar algo é muito simples no laravel achei muito desalinhado fora o fato do MVC dele vocÊ consegue entender bem como cada arquivo funciona, até depurar usando um var dump e die kkk... mas realmente acho que é puro gosto pessoal kkkk fiz projetos em cakephp que até hoje não deixou a desejar velocidade, estabilidade, mas não uso ele pra tudo kkkk gosto muito do Adianti tecnologia BR acho incrivel essa ferramenta também para sistemas corporativos
@MrEsdrasadiel
@MrEsdrasadiel Год назад
Muito bom cara! Gosto de ouvir outros desenvolvedores. Isso me ajuda a ter mais ideias na hora de resolver as buchas.
@DiasDeDev
@DiasDeDev Год назад
Fico feliz que tenha gostado, Adiel. 😁
@costamarques2008
@costamarques2008 Год назад
Eu utilizo a anos o Adianti Framework, o mesmo me proporcionou uma qualidade de vida enorme
@thiaguinhowjj
@thiaguinhowjj 2 года назад
Na empresa que trabalho nós torcemos o nariz pelas mesmas coisas. Começamos um projeto tentando usar DDD com o Eloquent e foi um desastre. Além disso, nós já trabalhávamos separando a camada de BD em repositories e não fazia o menor sentido, pois o Model já fazia os 2 papéis. Ao fim, utilizamos o pacote laravel-doctrine e nos deu o melhor dos dois mundos: todo arcabouço de coisas que o laravel oferece com toda vantagem de usar o doctrine. Muito bom vídeo. Muito legal saber que outras pessoas tem dores parecidas.
@DiasDeDev
@DiasDeDev 2 года назад
Maneiro saber que usaram o laravel doctrine. Se importa de dizer qual versão do Laravel estão usando? Tiveram algum problema de compatibilidade ou algo assim? Abraços!
@thiaguinhowjj
@thiaguinhowjj 2 года назад
@@DiasDeDev Laravel 8.x. Tivemos um problema com o doctrine-inflector. Na época precisamos pinnar a versão, mas isso foi há 2 anos atrás.
@DiasDeDev
@DiasDeDev 2 года назад
Hmm, muito bom saber isso. Você ainda está no projeto? Conseguiram atualizar a versão?
@thiaguinhowjj
@thiaguinhowjj 2 года назад
@@DiasDeDev Estou sim. Atualizamos pra última versão antes da próxima major (1.4.4).
@ruansales2715
@ruansales2715 2 года назад
Top demais o conteúdo, ontem mesmo eu estava conversando com o ilustre Marcel dos Santos, sobre Laravel e as diferenças, o que chegou justamente na abordagem de Data Mapper e Active Records, hoje impressionantemente sou agraciado com esse vídeo! Conteúdo top, a semana está ótima a nível de conhecimentos. Obrigado Vinícius.
@DiasDeDev
@DiasDeDev 2 года назад
Opa, fico muito feliz que tenha agregado, Ruan. :-D
@julio.canezin
@julio.canezin 2 года назад
Na solução que você sugeriu, o Doctrine cai no mesmo problema do ORM pŕoprio do Laravel...se o Doctrine não for mais mantido? O Laravel tem provedores de serviço que matam o mesmo problema, eu posso mudar o driver de persistência no metodo boot(). A injeção de dependência que você sujeriu o Laravel faz de forma automática com typehints do PHP sem precisar instanciar nada.
@DiasDeDev
@DiasDeDev 2 года назад
Julio, eu comentei o caso do Doctrine não ser mais mantido: Só passar meu objeto de domínio pra outro gerenciador de entidades. E em uma arquitetura robusta, eu teria repositório implementando uma interface do meu domínio. O ponto é que com Active Record nós temos código de DOMÍNIO dependendo de INFRAESTRUTURA. Isso é um conceito básico que qualquer padrão arquitetural ensina a evitar. Com Active Record para separar o domínio da infra nós precisamos ficar criando os famigerados "services" e simplesmente abandonar a expressividade do domínio, entende?
@niltonduarte3531
@niltonduarte3531 2 года назад
Gostaria muito que vc falasse sobre ORM. Em especial sobre o doctrine que é um ORM de mercado e como ele faz o mapeamento objeto relacional. Até desse um exemplo de persistência de dados.
@DiasDeDev
@DiasDeDev 2 года назад
Ótima ideia, Nilton!
@SoloeTemas
@SoloeTemas 2 года назад
Começando no PHP, muito bom o conteúdo!
@DiasDeDev
@DiasDeDev 2 года назад
Que bom que curtiu. :-D
@jock3rbr
@jock3rbr 2 года назад
Utilizo o data mapper desde 2007. Muito bom o teu vídeo!
@DiasDeDev
@DiasDeDev 2 года назад
Que bom que curtiu. :-D
@LuisCarlos-pm6mi
@LuisCarlos-pm6mi 2 года назад
O q falta ao PHP é uma camada de abstração de banco de dados nativa da própria linguagem. O Java tem o JPA que os ORMS implementam. Em teoria, se voce muda o ORM/implementação do JPA, você não sente porque a linguagem te oferece as annotations e as interfaces e o ORM a implementação.
@DiasDeDev
@DiasDeDev 2 года назад
Uma camada de abstração pro banco de dados já existe. É PDO, equivalente ao JDBC do Java. Já JPA não é uma camada de abstração, é um padrão, uma API. O equivalente no mundo PHP seriam as PSRs, mas honestamente não vejo uma PSR de ORM surgindo... Mas entendi sim o seu ponto.
@LuisCarlos-pm6mi
@LuisCarlos-pm6mi 2 года назад
@@DiasDeDev eu escolhi mal as palavras e obrigado por me corrigir. Mas seria interessante uma PSR definido um padrão pra orm implementar e poder mudar isso por debaixo dos panos. Aí dessa forma a linguagem prove as interfaces e objetos, e voce nao se preocupa com isso.
@juliocesaralvesdelima2210
@juliocesaralvesdelima2210 2 года назад
Vinicius, parabéns pelo conteúdo. Sou fã do seu trabalho tanto aqui no you tube, quanto na Alura. Eu tenho uma grande dificuldade com relação a entender como montar a infraestrutura de um projeto (Camada de negócio, camada de aplicação, etc). Se você pudesse criar um vídeo mostrando como estruturar um projeto, isso ajudaria muito! Forte Abraço. 🤜
@DiasDeDev
@DiasDeDev 2 года назад
Opa, Julio. Pretendo lançar um vídeo sobre isso sim. Já viu o curso de arquitetura lá na Alura? No canal Cabra Dev aqui do RU-vid tem uma playlist legal sobre o assunto também.
@JuniorSilva-dl2ex
@JuniorSilva-dl2ex Год назад
Eu não sou do tipo que curte comparar ferramentas, afinal, da linguagem ao framework, tudo é ferramenta, todas tem seus pontos forte, fracos e propostas para resolver problemas, quem escolhe qual ferramenta usar é o profissional, no fim das contas é a necessidade do produto que deve ser levada em consideração, se laravel atender, tá bom, se não atende, tá bom também. Acho que evoluções ocorrem por conta de situações como essa dita no vídeo, que são aplicadas e posteriormente percebidas que podem ser melhor, a exemplo de como javascript mudou positivamente. Lembro da transição no react quando entrou os hooks, foi uma mudança bem drástica, literalmente precisava rescrever o código sem poder atualizar a versão, foi doloroso mais os benefícios justificaram a decisão, isso só exemplifica que conforme as coisas vão evoluindo a forma de fazer muda, poderá quem sabe no futuro a evolução desse fato, que convenhamos, nem é de fato um impedimento para uso do laravel, dar para optar por não usar o ORM, logicamente isso exige um dor de cabeça que realmente se deve questionar se o produto precisa mesmo disso e se é o caso escolher o laravel. O vídeo foi bem legal, parabéns. Eu não duvido que vai ter gente que vai ver isso de forma muito extremista sem se quer saber sobre o de fato esta sendo dito, mas é normal isso, essas pessoas vão ganhar maturidade e um dia entender que esses questionamentos são válidos e é isso que faz as coisas ir melhorando, afinal, nosso papel é resolver problemas sempre pensando na melhor forma de se fazer.
@81jlgregorio
@81jlgregorio Год назад
Realmente, o Eloquent tem essas limitação, sendo mais usado para aplicações mais simples, ou seja, em que a questão do acoplamento pode ser negligenciada até certo ponto. Para aplicações mais complexas e com um tempo de vida maior, o Laravel suporta o Doctrine.
@chsamaral
@chsamaral 2 года назад
Olá como vai. Você pode usar o Laravel com Doctrine. Aqui na empresa, como trabalhamos com o banco de dados Oracle, o Doctrine foi a melhor escolha, porque na época o Eloquente não era recomendado para este SGBD.
@marcelobezerra553
@marcelobezerra553 2 года назад
Ola Carlos, tudo bem? Sim pode usar com Doctrine sim Laravel/Doctrine!
@DiasDeDev
@DiasDeDev 2 года назад
Sim sim, Carlos. Mas eu prefiro escolher um framework que já possui uma filosofia mais desacoplada do que "lutar contra o framework" tentando desacoplar algumas coisas. E aqui mesmo nos comentários já houve relatos de pequenas incompatibilidades no projeto Laravel Doctrine. Pra mim vale mais a pena ir por outro caminho...
@denisalustau
@denisalustau 2 года назад
o melhor do laravel eh o Serivce Container e eh o que me faz continuar usando ele (Isso eh claro dependendo do problema)! Isso tudo que vc falou eh resolvido apenas com o Repository pattern! Os problemas nao sao as ferramentas e sim quem usa! Nao adianta ter um revolver na mao e vc usar ele dando coronhada! O Laravel eh simplesmente um dos melhores frameworks de todos os tempos... vamos escrever menos codigo, e manter o mais simples possivel, com bastante teste automatizado, eh isso que eh o mais importante no mundo da programacao!
@DiasDeDev
@DiasDeDev 2 года назад
Repository pattern não resolve isso porque você continua tendo código de domínio (que é sua "model") dependendo de infraestrutura. O que a galera costuma fazer pra "resolver" é deixar todo o modelo anêmico e passar todas as regras para "services". Isso resolve por um lado mas deixa o domínio bem menos expressivo.
@denisalustau
@denisalustau 2 года назад
@@DiasDeDev claro que resolve, minha aplicação vai usar o repository e não chamar o model direto! Se um dia precisar trocar o ORM fica fácil, eh só ir direto no meu repository e tá tudo certo pro resto da aplicação
@thalesbarbosa2027
@thalesbarbosa2027 Год назад
Vinicus lança um video sobre o laravel Doctrine, se possivel um curso na Alura kk
@DiasDeDev
@DiasDeDev Год назад
Larga mão e usa Symfony logo. :-p kkkkkk
@elenildosantos888
@elenildosantos888 5 месяцев назад
É melhor fazer tudo em Assembly, assim o código fica bem independente
@DiasDeDev
@DiasDeDev 5 месяцев назад
Kkkkkkk Entendeu nada do vídeo, né, paizão?
@PedrocaGcx
@PedrocaGcx 2 года назад
Boa Vinícius ! Conteúdo muito bom, sempre te acompanhando ! Cara, um conteúdo que queria muito ver tu fazendo é ferramentas que tu utiliza para ter um padrão de código, por exemplo sei que tu utiliza o phpStorm, mas o que tu utiliza nele para manter o padrão de código padronizado ? O workflow, codesniffer ... entre outros.
@DiasDeDev
@DiasDeDev 2 года назад
To pra gravar um vídeo sobre análise estática há um tempão, Pedro. rsrsrs Mas em um projeto com código recente, só o PHPStorm já ajuda 1000%. :-D
@rogerionunes90
@rogerionunes90 2 года назад
Muito boa a sua visão sobre o tema, conteúdo de qualidade!
@DiasDeDev
@DiasDeDev 2 года назад
Que bom que curtiu, Rogerio. :-D
@julio.canezin
@julio.canezin 2 года назад
Eu até entendo seu receio de depender de um código que você não mantém, mas se formos pensar assim, ninguem faz nada com as coisas dos outros...todo mundo tá sujeito a ser abandonado num aspecto, seja um plugin, seja uma lib, seja um framework ou até mesmo um sistema!
@DiasDeDev
@DiasDeDev 2 года назад
O ponto é que com Active Record nós temos código de DOMÍNIO dependendo de INFRAESTRUTURA. Isso é um conceito básico que qualquer padrão arquitetural ensina a evitar. Com Active Record para separar o domínio da infra nós precisamos ficar criando os famigerados "services" e simplesmente abandonar a expressividade do domínio, entende? A dependência de componentes pode ser feita de forma mais segura e estável com inversão de dependência (famoso I do SOLID).
@italoepifanio5962
@italoepifanio5962 2 года назад
O vídeo ficou bem legal, mas acho que você podia ter explorado mais coisas além desse acoplamento do active records, fica a dica pra mais alguns vídeos explorando os problemas de frameworks
@DiasDeDev
@DiasDeDev 2 года назад
Concordo, Ítalo. Muito obrigado por esse feedback. Eu fiquei receoso de deixar o vídeo longo demais, mas realmente eu podia pelo menos ter citado outros problemas.
@felipetrebino4583
@felipetrebino4583 2 года назад
Lendo o título buguei total, aprendi a usar Laravel no teu curso da Alura kk, mas entendi o ponto.
@DiasDeDev
@DiasDeDev 2 года назад
Rsrsrs Pra conhecer as desvantagens eu preciso conhecer a ferramenta, né!? E se eu conheço, eu posso ensinar. :-p Como eu falei no vídeo, Laravel tem seus pontos positivos. Só que é muito importante conhecer os negativos também.
@igorsantos07
@igorsantos07 2 года назад
A questão que eu não entendi é: se o Eloquent é o "único problema" do Laravel, ele pode ser ignorado e se usar o Doctrine no lugar. No nosso projeto a gente fez o oposto, puxamos o Eloquent pra acoplar num ORM arcaico (nível mysql-ext), e ele não traz nem o sistema de migrations nem eventos junto. Ele é bem desacoplado (tanto que é uma das duas partes do framework com nome próprio) e, no meu parco entendimento, seria perfeitamente possível usar toda a extensão do Laravel com Doctrine ao invés do Eloquent. E o argumento de abandono é parcialmente falho: vc compara o abandono do framework (que certamente teria uma sobrevida caso o louco do Taylor dê uma de.... louco, assim como aconteceu com o Faker) com o abandono de uma library. Ter código acoplado a uma library é realmente delicado, mas é muito importante pesar o quanto de overhead o desacoplamento pode causar - com código mais verboso e mais complicado de se entender, por exemplo. Se a library tem uma expectativa de vida longa (como é o caso desse assunto), pode valer a pena sim o acoplamento, visto que o efeito colateral ruim é, principalmente, uma pequena hipótese de um futuro distante. Usando o mesmo raciocínio, seria ruim então que os templates sejam baseados em Twig ou Blade, ou que todo seu fluxo de request/response seja dominado pelo formato de MVC do framework que você escolher. Afinal, se o framework for abandonado, vc vai precisar adaptar mil métodos e afins para outro framework. Acredito que a discussão seria mais produtiva se expandisse no argumento de AR vs DM. Envolver frameworks inteiros e discutir abandono de libraries nesse assunto só ajuda a dispersar o tópico e criar polêmica rs
@riemi2009
@riemi2009 2 года назад
Perfeito !
@adrianoprogramador
@adrianoprogramador Месяц назад
Muito bem!
@Oculterous
@Oculterous Год назад
Os meus motivos são: ele complica e da opinião em coisas que deveriam ser simples, ele é em PHP, o pessoal adiciona um monte de coisa acoplada como "octane" para solucionar problemas que ou é do laravel ou da linguagem que ele foi escrito, vc transfere a carga disso tudo para techs de infra sem a necessidade dificultando o deploy e a manutenção, e é problemático para atualizar pois na maioria das vezes vc tbm que criar outro projeto do zero para atualizar de uma versão para outra. Por isso vale mais a pega passar para node, com o NextJS por exemplo, vc tem bem menos atrito e e faz tudo isso funcionar melhor
@Oculterous
@Oculterous Год назад
Se vc usar o prisma ele consegue ler o banco de dados e transformar nas models dele dentro do prisma
@DiasDeDev
@DiasDeDev Год назад
Aí você confundiu tudo e falou coisa que não faz sentido. rsrsrsrs Se instalar uma extensão de Swoole é trabalho pra infra, instalar o Node também é, amigo. Não faz o menor sentido.
2 года назад
Entendi seu ponto e o bom é que na realidade você não falou mal do Laravel, como se ele fosse um framework horrível, e sim apenas não gosta de alguma parte de como ele trata alguma funcionalidade específica. E o melhor é: cada um consegue continuar gostando dos usuários do jeito que prefere.
@DiasDeDev
@DiasDeDev 2 года назад
É isso. Só mostrei um detalhe que me faz optar por outras ferramentas. :-)
@reinaldorti
@reinaldorti Год назад
Eu estudo laravel desde 2019, nunca usei ele mais sempre to estudando quando posso
@YuriPeixotoMestre
@YuriPeixotoMestre 7 месяцев назад
Opinião interessante, mas que não se aplica ao mercado. Como opinião interessante não paga meus boletos...
@DiasDeDev
@DiasDeDev 7 месяцев назад
Kkkkkkkkk
@lucasfsmartins
@lucasfsmartins 2 года назад
O Eloquent também pode ser usado externamente (fora de um projeto Laravel). E também não acho um bom motivo para não gostar de Laravel, pois você pode usar o Repository Pattern para resolver esse problema. Acho que qualquer linguagem/framework pode ser bom, desde que usado da maneira correta. O que eu não gosto muito é a forma como o Eloquent monta as queries, poderia ser mais otimizado.
@DiasDeDev
@DiasDeDev 2 года назад
Então, Lucas, simplesmente usar um Repository não resolve isso não. Em um domínio expressivo, o que usamos como "model" no Eloquent seriam entidades de domínio, sem conhecimento da infra. E pra fazermos isso e usar Active Record por baixo dos panos o trabalho é bem maior. Mas sim, toda ferramenta pode ser boa se bem aplicada, sem dúvida. Concordo com você.
@gustavoschneider469
@gustavoschneider469 2 года назад
Bom vídeo, concordo em alguns pontos, mas uma pergunta, se tu pudesse escolher livremente a tecnologia para um projeto novo, tu faria o uso de PDO com Repository Pattern ou usaria algo semelhante ao Doctrine?
@DiasDeDev
@DiasDeDev 2 года назад
Se o projeto precisar ter o domínio desacoplado, muito probabilidade iria de Doctrine. Mas isso é detalhe. No meu domínio eu teria a interface de repositório que poderia ser implementada com Doctrine, PDO ou até PearDB. 😅
@sandrofpaula
@sandrofpaula Месяц назад
Eu gostaria muito da sua opinião sobre o framework yii2. 😊
@DiasDeDev
@DiasDeDev 24 дня назад
Não vejo nenhum motivo pra utilizar. É um framework pouco utilizado sem nenhuma vantagem sobre outros mais comuns no mercado. A menos que eu trabalhasse em uma empresa que possui projetos em Yii2, eu provavelmente não estudaria esse framework.
@edilycesar
@edilycesar Год назад
Eu gostaria de ver um vídeo seu sobre Laminas/Mezzio.
@claudiosilvajunior1206
@claudiosilvajunior1206 2 года назад
Onde eu trabalho o pessoal normalmente cria um repository pra trabalha com o crud, uma convensão pq se vc for usa o model no service pra fazer as operações de banco fica bem verboso o codigo
@DiasDeDev
@DiasDeDev 2 года назад
Se o sistema é só CRUD, active record é uma opção completamente viável sim. Agora se você precisa separar seu domínio do acesso a dados, aí que a história muda. :-)
@leonardobarussi5357
@leonardobarussi5357 2 года назад
Boa vini! E sim, isso me incomoda também. Me sinto muito preso quanto a isso (apesar de utilizar o Laravel no dia a dia). Uma pergunta, não sei se você pode responder, mas se puder, seria ótimo pois fiquei muito curioso. Qual framework PHP voce utiliza no seu dia-a-dia? Forte abraço e parabens pelo conteúdo!
@DiasDeDev
@DiasDeDev 2 года назад
Fico feliz que esteja curtindo, Leonardo. Sobre o que eu uso, não é tão interessante porque sempre trabalho em projetos legados. Na empresa atual tem alguns projetos, os 2 principais tem Slim em um e CodeIgniter 2 em outro. Nesse segundo eu estou tentando conversar com a equipe de produtos pra explicar a necessidade de fazermos uma espécie de reescrita progressiva. Tomara que vá pra frente. rsrsrsrs
@thiagow_sg
@thiagow_sg 5 месяцев назад
Como essa questão é tratada hoje em dia? O Laravel ainda possui essa 'desvantagem'? A opção apresentada no vídeo continua sendo a melhor prática?
@DiasDeDev
@DiasDeDev 5 месяцев назад
Como assim "hoje em dia"? O vídeo é recente. Rsrsrs Nada mudou.
@thiagow_sg
@thiagow_sg 5 месяцев назад
@@DiasDeDev 27 de jan. de 2022? O conteúdo pode ser atual, mas convenhamos que já faz um tempinho desde que o vídeo foi publicado.
@DiasDeDev
@DiasDeDev 5 месяцев назад
Caramba, verdade. Pensei que fosse mais recente. Kkkkkk Mas o vídeo fala sobre conceitos e princípios. Active Record é Active Record desde a criação. O mesmo vale pra Data Mapper. :-D
@Marcelo-ok3sl
@Marcelo-ok3sl 2 года назад
Ótimo artigo parabéns, mas você não acha que a dependência também ocorre em tudo desde que se use orm? O mesmo pode ocorrer quando se usa entityframework por exemplo. Grande abraço. Além do que nenhum frame tem 100% de garantia que vai durar pra Sempre. O ideal seria fazer igual ao python virar uma fundação por exemplo. Mas você está certo no seu argumento. Grande abraço.
@DiasDeDev
@DiasDeDev 2 года назад
Sem dúvida o uso de ORMs pode sim fazer com que seu código fique mais acoplado, mas um data mapper (em oposição ao active record) é bem mais fácil de isolar. Suas entidades ficam no domínio e só seus repositórios ficam na infraestrutura usando o ORM para persistir as entidades.
@diegolisboa7785
@diegolisboa7785 2 года назад
Ótimo video Vinícius!!! Analisando o seu contexto sobre o Active Records dá para entender que ele fere o S (Solid), conforme a implementação no Eloquent ORM.
@DiasDeDev
@DiasDeDev 2 года назад
O padrão Active Record fere sim o princípio de responsabilidade única.
@henriquebatista5970
@henriquebatista5970 2 года назад
Felipe?
@diegolisboa7785
@diegolisboa7785 2 года назад
@@henriquebatista5970 resolvido haha
@henriquebatista5970
@henriquebatista5970 2 года назад
@@diegolisboa7785 kkkkk! Mas é Vinicius.
@diegolisboa7785
@diegolisboa7785 2 года назад
@@henriquebatista5970 😮😅😅
@gleisonoliveira8371
@gleisonoliveira8371 2 года назад
Adoro o laravel e adoro a forma com que o eloquent funciona. Sobre dizer que usar o eloquent é depender muito do laravel eu não concordo. A partir do momento que vc usa um framework você passa a depender dele, você não vai conseguir migrar uma aplicação symfony para outro framework também.
@DiasDeDev
@DiasDeDev 2 года назад
Gleison, você não entendeu o ponto principal do vídeo. O problema não é "depender" do framework em algum nível. O problema é ter código de DOMÍNIO dependendo de INFRAESTRUTURA, entende?
@gleisonoliveira8371
@gleisonoliveira8371 2 года назад
@@DiasDeDev sim, atualmente trabalho em um projeto symfony com doctrine e anteriormente em um laravel com eloquent. Realmente é visível que no laravel perdemos uma parte dos princípios do solid inclusive. Minha citação é apenas que existem pontos positivos e negativos em cada abordagem, e em especial no php, já que ele é uma linguagem que permite que tenhamos propriedades de um objeto sendo preenchidas de forma dinâmica, e isso facilita muito essa abordagem que o eloquent usa. E que cabe a cada projeto uma profunda análise das características de cada framework, seja a curto ou longo prazo, e que em ambos, teremos pontos que podem prejudicar uma possível expansão do projeto ou na troca de um framework. Um exemplo disso no symfony são as anotações nos arquivos yml que são feitas para o symfony e no caso da troca do framework, rotas, entidades e configurações terão que ser repensadas e remodeladas. Talvez a única forma de ter um código não dependente de nada, seria reinventar a roda e fazer só zero, correndo os riscos e problemas que isso poderia causar.
@DiasDeDev
@DiasDeDev 2 года назад
Sem, toda abordagem possui trade-offs. Mas vamos só esclarecer algumas partes: 1. O Laravel não utiliza propriedades dinâmicas (inclusive isso vai ser depreciado no PHP 8.2) 2. Entidades não precisam ser repensadas ou remodeladas ao utilizar data mapper justamente por serem objetos de domínio. E se a arquitetura for bem montada, ao mudar o framework você pode só mudar as rotas e "reescrever" os controllers que seriam camadas bem finas, apenas pegando o request e chamando uma classe de aplicação 3. Não existe código que não dependa de nada. Isso nunca vai ser o objetivo. O ponto é *como* e *onde" nós nos acoplamos. ;-)
@vitorsiqueira7306
@vitorsiqueira7306 2 года назад
Pelos comentários vejo que gerou um pouco de crise existencial no pessoal, alguns perguntando se deveriam parar de usar o Laravel, outros perguntando se deveriam parar de usar frameworks, outros perguntando qual o melhor. Eu acredito que o Laravel é bastante poderoso e versátil pela quantidade muito expressiva de pessoas que contribuem diretamente para o projeto ou indireto na forma de componentes. O que o Vinícius mencionou dos pontos que desagrada nele não significa que o framework está condenado e nem que ele não será útil em nenhum projeto. Ao contrário, lendo alguns comentários abaixo o Vinícius menciona algumas situações onde o Active Record faz mais sentido e mais produtivo. É difícil alcancar o nível de senioridade de um dev como o Vinícius, onde ele já viu e usou muita coisa, então, ele consegue com destreza saber o melhor framework (ou nenhum framework) para cada tipo de projeto. Na maioria dos projetos - agora minha opinião - creio que o Laravel irá atender. Só consigo ver projetos muito grandes ou de carácter específicos que ele é menos interessante. Inclusive será sempre excelente para fazer APIs para nossos web apps - onde o Active Record se torna ponto forte novamente.
@DiasDeDev
@DiasDeDev 2 года назад
Realmente é comum o pessoal se emocionar e tomar decisões baseados em um vídeo de RU-vid, o que não é uma boa coisa. Quanto a quando Active Record não seria legal, nem precisa de um projeto muito grande ou específico. Se você tem um projeto onde realmente há regras de negócio (e não só CRUDs) você pode querer separar essas regras (seu domínio) dos detalhes de infraestrutura (framework, banco de dados, etc). Nesses casos o uso de Active Record já é uma pedra no sapato.
@billbarsch
@billbarsch 2 года назад
a única coisa chata é que eu fiz meu sistema no 7 e agora já tá no 9 kk tirando isso é bem bacana, padrão da indústria
@DiasDeDev
@DiasDeDev 2 года назад
O ritmo de atualização agora é bem definido, então vejo como uma vantagem. Defina uma periodicidade para seu time atualizar as dependências do sistema. :-)
@douglasandrade5199
@douglasandrade5199 2 года назад
Gostei muito da explicação técnica! Obrigado.
@DiasDeDev
@DiasDeDev 2 года назад
Fico feliz que tenha gostado, Douglas. Obrigado pelo feedback.
@tgbaldo
@tgbaldo 2 года назад
Pra mim o grande problema é: depender de implementação do que contrato. E neste cenário, vc poder ter Doctrine, CakeORM, ou outros que implementam Data Mapper, que mesmo assim terá grandes dores quando precisar substituí-los, assim como o Eloquent. Então, independente do que será usado, o melhor caminho é quebrar essa dependência de objetos concretos e depender apenas de interfaces. Parabéns pelo conteúdo!
@DiasDeDev
@DiasDeDev 2 года назад
Opa, Tiago. Usando um DataMapper é bem mais fácil ter uma interface sua no domínio e fazer um repositório implementar essa interface usando apenas seus objetos de domínio. Assim se o Doctrine ou se tornar inviável para meu projeto, posso criar novos repositórios implementando a mesma interface e fazer essa migração de forma gradual e (BEM) menos dolorosa. :-D
@tgbaldo
@tgbaldo 2 года назад
@@DiasDeDev qual são essas facilidades que vc fala em relação ao Doctrine? Porque, eu tenho um projeto pessoal onde meus casos de uso dependem de um repositório via contrato, onde a implementação desse contrato é o Eloquent, e funciona bem. Qual a vantagem que o Doctrine traz em relação ao Eloquent pro meu domínio, já que meu domínio irá depender de contratos apenas?
@DiasDeDev
@DiasDeDev 2 года назад
@@tgbaldo Pra usar o Eloquent você vai precisar criar sua entidade de domínio e também uma model na camada de infra, aí seu repositório vai usar essa model do eloquent, trasformando os dados da sua entidade de domínio em campos da model. Com Data Mapper você pode simplesmente passar essa entidade de domínio pro seu gerenciador de entidades, sem precisar desse trabalho extra de criar a model e fazer o mapeamento da entidade pra model. O mapeamento de um data mapper é mais natural (sendo por código ou arquivos externos). Mas sem dúvida essa abordagem usando a model somente na infra resolve o problema sim. :-D
@tgbaldo
@tgbaldo 2 года назад
@@DiasDeDev saquei, realmente se quiser usar o poder do Eloquent, tem que usar as models, sem elas, terá que usar apenas o DatabaseManager.
@adonisjsbrasil
@adonisjsbrasil 2 года назад
Vc ta falando ai pra programadores iniciantes né... Perfeitamente possível se livrar dessa dependência do laravel com service/repositorty....
@DiasDeDev
@DiasDeDev 2 года назад
Nuno, seu objeto que deveria ser de domínio continua dependendo da infraestrutura. Usar DI não muda em absolutamente nada nesse ponto.
@adonisjsbrasil
@adonisjsbrasil 2 года назад
@@DiasDeDev Não cara.. nao dependo do framework nem do ORM... Posso Rancar minha logica de persistência no banco e jogar em ontro lugar que ela vai funcionar
@DiasDeDev
@DiasDeDev 2 года назад
Então basicamente você não usa as models do Eloquent como parte do seu domínio, cria interfaces pra seus repositórios de forma independente e os implementa na camada de infra, só usando o Eloquent lá, fazendo um mapeamento das models para entidades do domínio que você cria como classes "normais" do PHP? Se sim, é uma abordagem que realmente resolve o problema, mas como eu disse em vários comentários aqui: é lutar contra o framework. Prefiro usar um framework que já me incentive a trabalhar dessa forma como o Symfony ou Laminas, entende? Por que continuar usando o Laravel nesse quais as vantagens?
@adonisjsbrasil
@adonisjsbrasil 2 года назад
@@DiasDeDev de Certa forma uso, mas fico livre pra a qualquer momento não usar... posso a quaqluer momento suar PDO, MYSQLI ou qualquer outra coisa
@julio.canezin
@julio.canezin 2 года назад
Não entendi a sua fala quando você disse que a classe tem 2 responsabilidades. A classe é um subgrupo de Model certo? pois ela é estendida... O Laravel usa uma abordagem chamada ORM onde ele mapeia cada tabela do banco como um objeto. Consequentemente a classe, que nesse caso é camada de "Entidade (uma representação de persistencia de dados)" é responsável pela sua persistência e outras operações. Onde está a outra responsabilidade?
@DiasDeDev
@DiasDeDev 2 года назад
Julio, tem alguns conceitos errados aí: 1. A "model" do Laravel não é uma entidade. O nome "entidade", segundo o livro do Eric Evans, indica um objeto DO DOMÍNIO que possui uma identidade. A "model" do Laravel tem responsabilidades de infraestrutura (conhece o banco). 2. A dupla responsabilidade está justamente no fato de representar os dados do DOMÍNIO e também da INFRAESTRUTURA. Esses mundos não deveriam ser misturados por vários fatores. Como citei em outros comentário, isso é um conceito básico do estudo de qualquer padrão arquitetural. :-)
@julio.canezin
@julio.canezin 2 года назад
@@DiasDeDev Entendi seu ponto de vista, mas não consegui entender porque a abordagem via framework estaria "errada ou inadequada" já que eu consigo mudar minha infraestrutura de forma rápida também sem precisar mexer na minha entidade.
@julio.canezin
@julio.canezin 2 года назад
@@DiasDeDev cada uma gosta de uma coisa...
@DiasDeDev
@DiasDeDev 2 года назад
Não é "gosto", Julio. São conceitos objetivos. Você está confundindo o que é uma "entidade". Recomendo bastante a leitura sobre conteúdos de Domain-Driven Design. Vai esclarecer bastante as coisas pra você. :-D
@julio.canezin
@julio.canezin 2 года назад
@@DiasDeDev DDD é uma questão de gosto :)
@codinometube
@codinometube 2 года назад
Muito bom. Seria legal fazer alguns videos sobre pós e contra dos framworks. Eu mesmo uso o codeigniter a algum tempo. Mas nunca parei para pensar sobre esta questão.
@DiasDeDev
@DiasDeDev 2 года назад
Pois é. Toda ferramenta tem prós e contras. Não tem jeito. :-)
@matheusanandi
@matheusanandi Год назад
Depois de ler 301 comentários e todos os sub comentários aqui, vou dizer que o entendi rsrsrs... Você tem uma filosofia de programação que é desenvolver da forma mais desacoplada possível e principalmente quando se trata do DOMÍNIO. Este último trata das regras de negócio. Trata das entidades da vida real implementadas em código a fim de automatizar uma tarefa do dia-a-dia. O que você mais não gosta no Laravel é obviamente a indução nativa do framework a usar o ORM Eloquent, que utiliza o padrão ActiveRecord. Também há outros motivos como abuso do uso de métodos estáticos e etc. Você não é contra Laravel nem mesmo do ActiveRecord, porém para aplicações de grande porte cuja vida útil pode se estender por décadas, o uso dessa abordagem pode dificultar a migração do Laravel para outro framework no projeto em caso de descontinuidade desse ou qualquer outro motivo. O alto nível acoplamento ou uso disso em excesso no código trás várias dificuldades como manutenibilidade, expansibilidade ou escalabilidade de determinada responsabilidade do DOMÍNIO. ActiveRecord é ruim? NÃO! Também comentou que em projetos cuja responsabilidade é apenas fornecer camada para acesso aos dados, AR é uma ótima escolha. O problema da AR é quando o projeto necessita de uma camada de DOMÍNIO, regras de negócios e etc. Várias pessoas propuseram soluções para usar Laravel com DataMapper, Doctrine, Service/Respository e etc, mas não vale a pena lutar para desacoplar sendo que existem outros frameworks que foram feitos para serem desacoplados e estão aí prontos para serem usados sem precisar desconstruir a filosofia ou abordagem do que já foi utilizado no Laravel. Ao que me parece me referindo a impressão do Dias de Dev em relação ao Laravel é que muita coisa nele foi feita seguindo uma filosofia mais acoplada. Ao invés de lutar e passar trabalho reinventado a roda tentando desacoplar o Laravel, é mais fácil utilizar outros frameworks feito com o padrão DataMapper como Symfony ou Laminas. Ao invés de desmontar um avião e tentar mudar algumas peças para montar um carro, mais fácil comprar um carro que já existe e melhorar ele se necessário. Se você tem uma solução para desacoplar o Laravel, por que não começa desacoplado sem usar o Laravel com plugin ORM não oficial? E mudar o que já está em produção bem acoplado a um bom tempo. Bem é difícil, complexo e seu chefe não vai gostar do investimento (retrabalho*) rsrs. Também resumindo outros comentários DAQUI: - O Laravel tem sido melhorado em suas últimas versões para ser mais desacoplado; - Boatos de que o Doctrine não é 100% compatível em todos os casos com Laravel. O fato dele não ser suportado oficialmente pelo Laravel apoia esses boatos.. - LAMINAS Project é continuação do ZEND (getlaminas.org/); - Versão leve do LARAVEL provavelmente é o LUMEN; # Antes de achar que ele é hater de Laravel, ele da aulas dele kkk
@DiasDeDev
@DiasDeDev Год назад
Uau, que comentário completo. Muito bom! Só um detalhezinho nessa parte: "Você tem uma filosofia de programação [...]" Não é uma filosofia minha. São conceitos bem validados como Clean Arch, DDD, etc. :-D
@jeffersoncavpes
@jeffersoncavpes 7 месяцев назад
Nenhum framework tem a documentação que o laravel tem, isso fez eu escolhe-lo
@douglasandrade5199
@douglasandrade5199 2 года назад
Algo que aprende-se com pesquisas, é o diferencial de quando temos uma orientação especializada.
@DiasDeDev
@DiasDeDev 2 года назад
Que bom que curtiu, Douglas. :-D
@kaue8644
@kaue8644 2 года назад
Quanto ao ActiveRecord, só é um problema usando framework né? Se eu mesmo crio a classe Model não tem o problema de acoplamento, já que sou eu mesmo quem dou suporte a ela. Ou eu estou pensando errado? -- ajuda o novato aqui --
@DiasDeDev
@DiasDeDev 2 года назад
A dependência continua existindo. Sua classe de domínio vai depender de um detalhe de infraestrutura (a camada de persistência, ou seja, o banco de dados).
@lucasayabe
@lucasayabe 2 года назад
Eu acho que o problema é o padrão em si, como ele cita no vídeo, o problema do AR é que ele acumula muitas responsabilidades em um único objeto, e isso viola claramente o princípio de responsabilidade única. O acoplamento ainda vai ser um problema, pois a sua classe vai depender diretamente de outra classe (e não de uma interface) e pior, vai estar usando herança, o acoplamento dessa classe é muito grande, se a classe mãe der pau, todas as filhas dão junto. O que para mim é ruim do active record, é que você acaba misturando o código da classe de domínio que deveria representar o domínio da sua solução com um código de manipular o banco de dados, e isso faz com que o seu objeto de domínio saiba fazer coisas a nível de infraestrutura também e isso são responsabilidades de níveis muito distantes para poderem ficar juntas. Porém eu dou o braço a torcer e reconheço que usar active record é um dos jeitos mais práticos de manipular banco de dados, parece até mágica.
@jaguarnet7
@jaguarnet7 2 года назад
Apesar de gostar muito do Laravel essa é a parte que eu também critico. Não o uso do AR, mas ele ser a única opção. Esse pacote de decisões arquiteturais veio do Ruby on Rails. O eloquente poderia ter suporte claro a repository por exemplo e deixar o dev escolher
@DiasDeDev
@DiasDeDev 2 года назад
Seria bastante interessante. Se o projeto Laravel Doctrine fosse oficialmente apoiado ou mantido pela equipe do Laravel já seria ótimo!
@misterm7777
@misterm7777 2 года назад
Qual o melhor framework php na tu visão?
@DiasDeDev
@DiasDeDev 2 года назад
Não existe "melhor framework". Existem ótimos frameworks para propósitos diferentes. Frameworks equivalentes (e de cada categoria vc escolhe um "favorito"): - Foco em produtividade: Laravel, CodeIgniter, CakePHP - Foco em desacoplamento: Symfony, Laminas - Foco em programação assíncrona: ReactPHP, AmPHP, Swoole
@juliobitencourt2731
@juliobitencourt2731 2 года назад
Não é muito a minha praia, mas acredito que essa seja a mesma crítica ao Rails né? Bom. Eu sou muito fã de Laravel e uso desde a versão 4, mas é legal ver uma crítica embasada como a sua! Parabéns Vinícius!
@DiasDeDev
@DiasDeDev 2 года назад
Exatamente, Julio. Tudo que usa Active Record acaba caindo nesse "problema".
@uorpar
@uorpar Год назад
ta e qual a tua solução? eu tentei instalar o symfony e simplesmente não foi
@DiasDeDev
@DiasDeDev Год назад
Minha solução é estudar e conhecer alternativas. Não ficar cego e preso a uma única opção. :-D
@danielcarlosdev
@danielcarlosdev 2 года назад
Ruby on Rails tb usa active record.. hehehe..
@DiasDeDev
@DiasDeDev 2 года назад
Sim sim.
@ErikFigueiredoDs
@ErikFigueiredoDs 2 года назад
Ta, mas se eu escolho o framework para desenvolver, depender dele seria um problema? A solução real seria não usar um framework? Mesmo o Symfony, ele não tem forte acoplamento com nenhuma outra camada do projeto?
@lucasayabe
@lucasayabe 2 года назад
Pode resultar no problema que foi o argumento dele durante o vídeo inteiro que é o problema na hora de ter que migrar para uma tecnologia mais nova ou melhor no futuro. A solução real seria pensar na sua arquitetura desde o início para que quanto mais perto do domínio da sua aplicação, mais desacoplado o código tem que ser das outras camadas. O segredo é pensar em como deixar a sua arquitetura limpa, ai você consegue se basear em outras arquiteturas como a EBI, a ports and adapters, e a onion architecture para atingir esse feito.
@ErikFigueiredoDs
@ErikFigueiredoDs 2 года назад
@@lucasayabe Legal, mas não foi o que eu perguntei ou não ficou claro o suficiente pra mim. Neste caso, de você pensar de forma mais desacoplada possível, usar um framework feito para desenvolvimento acoplado é a decisão errada desde o começo, mas não define ele ser pior, melhor ou mérito de comparações. O ideial é partir para o completo isolamento das partes e subir microserviços em micro frameworks. Diferentes ferramentas para diferentes trabalhos...
@DiasDeDev
@DiasDeDev 2 года назад
Erik, você é livre pra escolher o quanto vai depender do framework e quanto vai usá-lo de forma desacoplada. Frameworks com uma filosofia mais componentizada como Laminas ou Symfony permitem que você use as facilidades do framework mas dependa de interfaces, por exemplo, facilitando a troca de componentes específicos inclusive. Já no Laravel é um casamento mesmo com o framework. A dependência é muito mais forte. Se pro projeto isso não é um problema, show de bola. Mas no mundo enterprise, por exemplo, essa dependência é sim um grande problema.
@ErikFigueiredoDs
@ErikFigueiredoDs 2 года назад
@@DiasDeDev legal, mas vc quer dizer o que, exatamente, com “mundo enterprise”, quem é este “mundo”?
@BrunoSinister
@BrunoSinister 2 года назад
@@ErikFigueiredoDs Neste caso ele está falando de projetos digamos "grandes" que lidam com dados financeiros, informações mais coorporativas e etc ... lembrando sempre que o ambiente web é amplo e podem haver projetos simples e complexos ... em projetos de maior complexidade, quanto melhor estruturado e com arquitetura definida, mais fácil de manter.
@FuncaoCurioso
@FuncaoCurioso 2 года назад
Caraca!!! Já trabalhei com Zend, Zend2, Cake, o pai do Laravel Fuel, o citado Phalcon(utilizo atualmente)... Mas sempre gostei muito do Laravel desde a sua versão 5. E o Sr. vem com argumentos que são irrefutáveis a me fazer repensar em voltar o Zend2 com Doctrine(Que digasse é um excelente ORM)... Muito bom conteúdo!
@DiasDeDev
@DiasDeDev 2 года назад
Fala, Alesson. Zend2 não existe mais. rsrsrs Dá uma olhada no Laminas.
@ramon1930
@ramon1930 2 года назад
E sobre o react do javascript, é uma boa?
@pierrialexander
@pierrialexander Год назад
@@ramon1930 React é utilizado para frontend, no vídeo ele cita pontos relacionados ao backend.
@ramon1930
@ramon1930 Год назад
@@pierrialexander React eh um framework ele tem módulos tanto de front quanto de back. Os useStates, setStates e Route são exemplos de back.
@pierrialexander
@pierrialexander Год назад
@@ramon1930 não, são responsáveis por manipular eventos, estados e roteamento de páginas, não manipulam banco de dados ou se faz uma API com React, isso são fundamentos básicos bixo.
@compilar
@compilar Год назад
Fala mais do Data Mapper, achei muito interessante
@messimoraes2991
@messimoraes2991 2 года назад
Interessante sua abordagem jovem! Fica o like.
@DiasDeDev
@DiasDeDev 2 года назад
Que bom que gostou. 😁
2 года назад
eu tenho um sistema de gestão para loteadoras, e a vida desse sistema é pra 15 20 30 anos... eu facilei em ter feito usando Eloquent... mas venho resscrevendo, separando a dominio, do Laravel... de tal forma no futuro, eu precisar trocar de framework, ou simplesmente n usar mais framework, meu dominio ja esteja isolado das bibliotecas... abraço!
@DiasDeDev
@DiasDeDev 2 года назад
Não sei se faz sentido pro seu projeto, mas dá uma olhada: www.laraveldoctrine.org/
@WebdesignemFoco
@WebdesignemFoco 2 года назад
Todo framework é uma bengala, te ajuda bastante em vários pontos no caminhar, mas também tem o peso extra a se carregar. Eu gosto do Laravel e de PHP pra mim é o melhor, mas quando se usa por exemplo o Django do Python se percebe uma simplicidade bem maior que no Laravel.
@DiasDeDev
@DiasDeDev 2 года назад
O ponto é saber quais as vantagens e desvantagens de cada ferramenta. :-)
@TecnocraciaLTDA
@TecnocraciaLTDA 2 года назад
Então não é que você não gosta do Laravel, na verdade você não gosta do Active Record que tem no Eloquent sendo que existem outras formas de fazer como por Repository ou Data Mapper, e você pode usar Doctrine com laravel tranquilamente caso não queira o Eloquent.
@DiasDeDev
@DiasDeDev 2 года назад
Existe sim a possibilidade de usar Doctrine com Laravel, Lucas, mas: 1. Eu prefiro usar um framework que possua a filosofia de desacoplar por padrão e não um que me faça ter esforço para fazer isso, entende? 2. O projeto Laravel Doctrine não recebe suporte oficial da equipe do Laravel, então as atualizações acontecem em ritmos diferentes. Isso pode me impedir de atualizar a versão do framework mais rápido, por exemplo. 3. Também há outros pontos que me desagradam no Laravel que eu (erroneamente) não citei. Abuso de métodos estáticos, por exemplo. Sei que também é possível não utilizá-los, mas aí voltamos ao ponto 1. :-)
@TecnocraciaLTDA
@TecnocraciaLTDA 2 года назад
@@DiasDeDev Tu pode usar doctrine sem usar o pacote laravel doctrine cara, é só chamar pelo namespace e configurar o doctrine antes. Sobre abuso de metodos estaticos, de novo isso é um argumento que vc ta se referindo ao Eloquent ou às classes de helpers, pq são só elas que ""abusam"" de metodos estaticos. Mas não vejo nada de errado nisso, pelo contrario, facilitam a escrita e leitura do codigo.
@TecnocraciaLTDA
@TecnocraciaLTDA 2 года назад
Se possivel discorra sobre esse argumento de abuso de metodos estaticos, por favor.
@JoaoNelsonLima
@JoaoNelsonLima 2 года назад
Concordo Vinícius a lógica das consultas ficam todas amarradas ao framework.
@DiasDeDev
@DiasDeDev 2 года назад
Meu ponto é mais que objetos de domínio acabam ficando amarrados ao framework...
@emersonmx
@emersonmx 2 года назад
Preciso ter o domínio preso ao ORM do Laravel? Não. Posso ter o domínio preso ao ORM? Sim, se o projeto for pequeno não vejo problema. Se for grande, aconselho pensar melhor na arquitetura. O ORM do Laravel é um problema? Não. Como separo o domínio do ORM? Em resumo: POPO + Repositories (Ver SOLID, Clean Architecture e DDD) Enfim, Laravel é uma boa ferramenta que usei por muitos anos. Entretanto, não usaria em projetos futuros. Tem coisa melhor por aí que é mais simples de usar. De qualquer forma, ótimo vídeo :)
@DiasDeDev
@DiasDeDev 2 года назад
Isso aí, Emerson. Conhecendo as limitações da abordagem "padrão" e sabendo sair dela, show de bola 😁
@hitalos
@hitalos 2 года назад
E o que impede de trocar o Eloquent pelo Doctrine?
@DiasDeDev
@DiasDeDev 2 года назад
Em um projeto existente ou novo? Em um projeto existente, é uma completa reescrita da arquitetura. Em um projeto novo, eu prefiro usar uma ferramenta que já me fornece a filosofia mais componentizada, entende?
@dougdomi
@dougdomi 2 года назад
Achei que era só eu que pensava assim. Muito bom conteúdo.
@DiasDeDev
@DiasDeDev 2 года назад
Que bom que curtiu, Douglas. :-D
@TallesAiran
@TallesAiran 2 года назад
trabalho desde a versão 4 aprendi a gostar dele e a usar essas peculiaridades, nas novas versões a unica coisa que me incomodou foi o fato de ter mudado o jeito que trabalha com o front, de resto e muito lindo, sobre isso que falou da depedencia eu entendo demais, ja tive problemas com isso, eu inclusive fiz uma classe extender o model direto nela ao inves de usar a model do laravel, assim tenho mais liberdade nas coisas, e tambem uso bastante o propio query builder dependendo da situacao, inclusive prefiro ele muitas vezes ao inves do Eloquent mesmo
@DiasDeDev
@DiasDeDev 2 года назад
Boa! Conhecendo os "problemas" e limitações, podemos tomar as melhores decisões. :-D
@rodriguesrrmb
@rodriguesrrmb 2 года назад
Excelente abordagem! Concordo plenamente com a sua opinião.
@DiasDeDev
@DiasDeDev 2 года назад
Que bom que curtiu, Rômulo. :-D
@DevLJL
@DevLJL 2 года назад
No meu projeto laravel, posso utilizar eloquent ou doctrine mudando apenas a variavel de ambiente. Se você tem uma arquitetura bem definida, você não fica preso a nenhuma lib ou framework. Troca igual troca de camisa, kkkkkkkkk. (Nem tanto).
@DiasDeDev
@DiasDeDev 2 года назад
Na prática a teoria é outra, né!? rsrsrs Mas sim, esse cenário que você descreveu é o ideal. Mas você não concorda que ActiveRecord atrapalha mais do que ajuda a montar uma arquitetura dessas?
@DevLJL
@DevLJL 2 года назад
@@DiasDeDev Trabalho com PHP a menos de 1 ano. Venho de outra linguagem e ferramenta. Na empresa que trabalho utiliza Laravel e Eloquent de forma totalmente acoplada. E pelo fato de eu não gostar desses tipos de acoplamentos eu desenvolvi outro sistema na qual eu consigo optar por Eloquent, Doctrine, Memory ou até sql bruto. Eu não tenho uma resposta clara do que prefiro ou não prefiro. Mas se tiver como escolher, acredito que o mapeamento de classes é a melhor opção.
@glauberborges6686
@glauberborges6686 2 года назад
Sobre o projeto depender da model dá para usar um provider que acessa a camadas externa (model) para a aplicação fazer uso desse provider e nunca da model diretamente. Posso estar falando bobeira e por isso to colocando aqui kkk. Assim vou tendo outras visões =D
@DiasDeDev
@DiasDeDev 2 года назад
Então, soluções existem. Não entendi bem sua sugestão, mas tem formas de contornar. O negócio é que o trabalho pra realmente desacoplar é tão grande que vale mais a pena usar algo que já tenha uma filosofia mais desacoplada, entende?
@glauberborges6686
@glauberborges6686 2 года назад
@@DiasDeDev Entendi, faz sentido. Eu coloquei provider na verdade é repository que me referia kkkkk Conteúdo top man.
@diesnei8067
@diesnei8067 2 года назад
Vinícius, eu pretendia criar um projeto em Laravel que trabalharia com os dados de uma API também feita em laravel, justamente para utilizar o ORM. Você me recomendaria alterar a minha estratégia para utilizar o doctrine? Já que com essa divisão, eu poderia criar um projeto em Laravel (para fazer uso de rotas por exemplo) e conectar com a minha API que trabalharia com esse ORM do doctrine, seria possível? Agradeço o excelente vídeo ainda mais em uma situação muito propícia para mim!
@lucasayabe
@lucasayabe 2 года назад
Dá pra usar laravel sem acoplar com o domínio, só que você ia ter que implementar um repositório que por de baixo dos panos vai usar um model do eloquent, e que vai ter que converter esse model para um objeto do domínio. Então o Model da sua aplicação não vai ser o Model do laravel nesse caso
@DiasDeDev
@DiasDeDev 2 года назад
Se essa API tem como único propósito ser uma camada de acesso a dados (e não vai conter regras de negócio), active record é na verdade uma ótima solução justamente por ser mais simples. Se for o caso, esse é um ótimo exemplo de quando o Active Record é bem utilizado, na minha opinião.
@diesnei8067
@diesnei8067 2 года назад
Muito obrigado pelas dicas pessoal! E essa API também conterá as regras de negócio. Irei estudar mais um pouco mais pra entender como funcionaria essa integração. Obrigado
@gruporsf
@gruporsf 2 года назад
Top demais vinicius, conteudo de primeira qualidade.
@DiasDeDev
@DiasDeDev 2 года назад
Que bom qur curtiu! 😁😁
@adilson_developer
@adilson_developer 2 года назад
Eu gostei da parte que ele falou que é rarissimas as exceções que te fariam mudar de framework. Eu tenho muitos projetos com Zend, que virou Laminas. Dei uma olhada no Laravel e não curti a disposição de pastas. E esse negocio das Facades não me agradou muito. Essa questão do ORM dele, para quem usa Doctrine, fica meio estranho mesmo. Não me esforcei para aprender Laravel porque eu achei perda de tempo aprender algo para a mesma linguagem que faria as mesmas coisas. Optei por aprender Spring no Java e também alguma coisa do .NET Core e NodeJS. A verdade é que o Laravel é fácil de aprender, fácil de usar... Por isso vem a aceitação da comunidade em peso. E o código do Laravel, é bonito, gostoso de trabalhar. Laravel é produtividade. Se você quer ser produtivo e quer se apaixonar pelo código, vai de Laravel. Como nosso amigo falou ali, quando você conhece a coisa, você muda, deixa ela mais parecido com o seu estilo de trabalho. Parabéns pelo video e parabéns para o pessoal que curte a ferramenta.
@DiasDeDev
@DiasDeDev 2 года назад
O ponto é esse: entender que toda ferramenta tem vantagens e desvantagens. :-D
@raulbarossis
@raulbarossis 2 года назад
Gosto muito da abordagem parecida com o doctrine q o symphony segue de anotações, faz um vídeo falando mais disso se possível :)
@DiasDeDev
@DiasDeDev 2 года назад
Já fiz :-D ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-NvdGYdOAt5Q.html
@raulbarossis
@raulbarossis 2 года назад
@@DiasDeDev tava falando sobre as anotações das rotas do symphony haha e até um pouco mais dele, mas o vídeo de orm foi ótimo tbm, já foi pra conta dos assistidos kkk Inclusive parabéns pela didática, incrível aqui e na alura, última vez q tive um professor tão foda foi o meu professor de física na faculdade haha
@DiasDeDev
@DiasDeDev 2 года назад
Que honra, @@raulbarossis Fico muito feliz que esteja gostando. Sobre mais conteúdos de Symfony, eu estou regravando os cursos da Alura sobre Symfony então em breve deve ter novidades lá. 😀
@raulbarossis
@raulbarossis 2 года назад
@@DiasDeDev :D vlw mestre haha, qnd lançar vou assistir certamente
@marcoscalixto2237
@marcoscalixto2237 2 года назад
Interessante mas quando usamos o repositories com interfaces e contracts a questão do orm eloquent ou querybuilder não faz diferença. Se não quiser usar o eloquente e quiser usar o doctrine, pdo ou outra qualquer forma ok. Estou errado?
@DiasDeDev
@DiasDeDev 2 года назад
Boa, Marcos. Você poderia sim usar um data mapper, por exemplo, mas para seu domínio realmente ser expressivo precisaria criar uma entidade sua (sem informações de persistência, ou seja, sem ser uma "model" do Eloquent) e usá-la nessa interface. Aí as implementações das interfaces fariam como fosse melhor. Mas isso é basicamente implementar o data mapper usando o Eloquent no fundo, o que traz muito mais trabalho e nenhuma vantagem sobre usar um framework que já te traz essa filosofia mais desacoplada, entende?
@arozendojr
@arozendojr 2 года назад
Para fazer uma api usando PHP, o que você escolheria ?
@DiasDeDev
@DiasDeDev 2 года назад
Depende de muita coisa. Se for um projeto grande com regras de negócio (e não só CRUD) eu provavelmente iria de Symfony. Se for coisa simples, daria uma olhada no API Platform.
@shadowsplay1852
@shadowsplay1852 Год назад
E o que você acha do CodeIgniter? ele tem a mesma estrutura neste aspecto que o Laravel??
@DiasDeDev
@DiasDeDev Год назад
Mesma coisa: www.codeigniter.com/user_guide/models/model.html
@shadowsplay1852
@shadowsplay1852 Год назад
@@DiasDeDev Vou partir pro Symphony pq eu tbm não curti o Laravel.
@DiasDeDev
@DiasDeDev Год назад
@@shadowsplay1852 Symfony e Laminas seguem uma filosofia de serem mais "desacoplados", o que me agrada bastante. Mas eles demandam um pouco mais de conhecimento de OO para que sejamos tão produtivos quanto nos frameworks mais "direto ao ponto".
@shadowsplay1852
@shadowsplay1852 Год назад
@@DiasDeDev Então, na verdade tu acredita que eu meio que sofro muito com framework, acho que é pelo fato de ter que estudar todo o conceito e os comandos ao qual a ferramenta proporciona para poder utilizar como se estivesse "sem" o framework. Eu costumo desenvolver em uma estrutura MVC crua, sem recurso, onde vc precisa criar o método no Model na unha pra buscar o que você quer do banco de dados e sigo em frente desta forma haha.
@guilhermesouza3461
@guilhermesouza3461 2 года назад
O maior problema é a responsabilidade dupla a meu ver, sou como o V.D (por que será né? nem aprendi tudo com ele kk) gosto de tudo bem separado, bem abstraído.
@DiasDeDev
@DiasDeDev 2 года назад
Pra mim o MAIOR problema é a dependência tão grande do framework na nossa camada de domínio.
@luan_maik
@luan_maik 2 года назад
Enquanto estive na comunidade PHP, era muito difícil encontrar esse tipo de assunto, e quando achava não tinha um bom argumento, acabava sendo apenas um "faz assim que é melhor" e não convencia, pq só mostrava ser mais complexo/verboso. A menos de um ano eu comecei a estudar .Net Core, que por ser mais utilizado por grandes empresas com grandes projetos, acabam tendo que lidar com esses problemas apontados no vídeo, e a comunidade do C# já tem esses conceitos bem mais difundido que a comunidade do PHP. Não estou fazendo comparação de linguagem ou comunidade, mas e sim informando que outras comunidades possuem outras visões, e isso pode agregar muito. Hoje eu não me vejo fazendo uma aplicação Laravel com o domain/infrastructure acoplado ao framework.
@DiasDeDev
@DiasDeDev 2 года назад
Exato, Luan. Realmente comunidades como as de .NET e Java já têm esses conceitos mais enraizados.
@LeoMoraess
@LeoMoraess 2 года назад
O que mais gosto do Laravel, é a velocidade de aprendizado e uma padronização entre projetos e empresas. Um jovem aprendiz, em menos de 6 meses já estava se virando sozinho. Hoje ele já está no segundo emprego e uma empresa show.
@luan_maik
@luan_maik 2 года назад
@@LeoMoraess concordo plenamente, mas ao custo de criar uma aplicação extremamente acoplada ao framework.
@Henrique-sn1zx
@Henrique-sn1zx 22 дня назад
@@LeoMoraess Então um iniciante pode ir sem medo aprender o laravel?
@LuizPauloCamargo
@LuizPauloCamargo Год назад
Voce acha que o symfony serve para uma API Rest ou Acha que é over Engineering? Eu estou iniciando um novo projeto e estou entre slim, symfony e laravel. Tambem nao sou fã do active record, inclusive fiz algumas apis com Lumen usando Doctrine para evitar o uso. Fui hoje no site da Laravel e eles falam para nao usar mais o Lumen, ai acabei desencanando de vez. Ai estou com essa duvida de qual escolher
@DiasDeDev
@DiasDeDev Год назад
Dá uma olhada no API Platform. É simplesmente SENSACIONAL, principalmente para projetos pequenos. Para projetos maiores, Symfony definitivamente é uma baita opção. Agora, se eu precisasse de algo com extrema performance, cogitaria usar HyperF com Doctrine.
@LuizPauloCamargo
@LuizPauloCamargo Год назад
@@DiasDeDev fui de symfony .. tô achando um espetáculo... Ele inclusive no momento de.criar o projeto pergunta se vai ser api ou não . Doctrine "nativo", organização, migration e etc. Foi uma surpresa muito boa a evolução que vi pois tinha mexido com ele na versão 2 só
@felipecunha31
@felipecunha31 2 года назад
Cara, acabei achando seu vídeo aqui enquanto pesquisava sobre o Laravel, vim pra conhecer uns pontos negativos rsrs e vc acabou chegando num ponto muito importante pra mim aqui... Eu já estou acostumado a utilizar o Doctrine, e já estava pensando em fazer algo com o Laravel mas mantendo minhas entidades do Doctrine. Isso não é possível? Fazer um projeto no Laravel porém utilizando doctrine ao invés do Eloquent??
@DiasDeDev
@DiasDeDev 2 года назад
É possível sim, Felipe. Tem um projeto chamado "laravel doctrine". Não é perfeito mas funciona muito bem pra grande maioria dos casos. Eu particularmente prefiro já usar um framework que tenha como filosofia ter seus componentes mais desacoplados (como Symfony ou Laminas), mas pra quem quer usar o Laravel com Doctrine, essa opção é muito válida.
@eusouojao
@eusouojao 2 года назад
Não sou um desenvolvedor com muita experiencia, mais se adotar o partner repository, não resolveria essa questão do Eloquent?
@DiasDeDev
@DiasDeDev 2 года назад
Ótima pergunta, João. Não resolve porque você continua sem um objeto puro de domínio, sem conhecimento do banco. A model continua lá no final das contas. Já no modelo do Data Mapper que eu mostrei, aquele "Product" é um objeto de domínio que não conhece nada do banco. Só possui as regras do negócio mesmo, e não de persistência.
@brunonairlanda
@brunonairlanda 2 года назад
Bem legal o video Dias, parabens pelo trabalho.
@DiasDeDev
@DiasDeDev 2 года назад
Opa, valeu, Bruno! :-D
@GabrielperroneBr
@GabrielperroneBr 2 года назад
Professor, sou leigo ainda, mas ainda sim quero fazer uma pergunta. Neste cenário que você apresentou, o DAO feito na "unha" seria a melhor saída? Além claro do Doctrine conforme apresentado.
@DiasDeDev
@DiasDeDev 2 года назад
Utilizar um DAO (ou repositório) de forma bem feita (dependendo de interfaces onde necessário) é sim uma saída, mas aí você simplesmente não utilizaria as models do Laravel, né!? O que pra mim é meio que lutar contra o framework. Prefiro ir para um framework que já me "incentive" a ter as coisas mais desacopladas.
@brunobmorais
@brunobmorais 10 месяцев назад
Tem alguma sugestão de framework?
@DiasDeDev
@DiasDeDev 10 месяцев назад
Pra projetos "comuns" eu prefiro o Symfony por ser mais desacoplado e menos opinante (embora ainda possua "opiniões", só não são tão fortes e restritivas). Se eu precisasse de algo em enorme escala, eu acho que iria de HyperF com Doctrine (ou criando meus repositórios sem ORM). Mas evitaria o uso de Active Record.
@brunobmorais
@brunobmorais 10 месяцев назад
@@DiasDeDev show, obrigado. Olhei alguns Frameworks e quase todos usam o mesmo formato como Cake, Laravel e não achei interessante por ser muito acoplado
Далее
МАМА И КОММУНАЛКА
00:59
Просмотров 139 тыс.
O futuro do PHP em 2024: Vale a pena aprender?
15:29
Просмотров 32 тыс.
I built 10 web apps... with 10 different languages
14:23
Testando o htmx | Diferenças em relação ao ReactJS
20:37
Novidades do PHP 8 - Conheça o JIT | Dias de Dev
11:10