Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Produtividade com Laravel Framework

Produtividade com Laravel Framework

Evento: Workshop Join Tecnologia - 2020
O Laravel é um framework de desenvolvimento rápido para PHP, livre e de código aberto. Seu principal objetivo é permitir que você trabalhe de forma estruturada e rápida.
Vamos conhecer um pouco sobre o Laravel Framework, abordando os conceitos mais básicos e alguns mais avançados em um breve overview, também veremos algumas boas práticas e o ecossistema que engloba um dos frameworks php mais populares da atualidade.

Igor Duarte

October 29, 2020
Tweet

More Decks by Igor Duarte

Other Decks in Technology

Transcript

  1. • ADS - Unisinos • Desenvolvedor Full Stack • Desenvolvedor

    há 7 anos • Laravel desde 2016 • Coordenador da Comunidade • Palestrante e Escritor • Criador de ElePHPants • Gamer nas horas vagas ;) Igor Santos
  2. Roteiro • Parte 1 - Um Pouco do Framework •

    Parte 2 - Básico do Framework • Parte 3 - Avançando no Framework • Parte 4 - Arquitetura e Algumas Boas Práticas • Parte 5 - Ecossistema
  3. História • Lançamento em Junho de 2011 • Criado para

    ser uma alternativa ao CodeIgniter • Escrito totalmente do zero • ORM (Eloquent) • Roteamento • Autenticação • Helpers Taylor Otwell
  4. Filosofia • Framework Moderno • Curva de Aprendizagem Baixa •

    Alta Produtividade • Boas Práticas de Desenvolvimento • Foco na Simplicidade • Excelente Documentação • Implementa Padrões PSR
  5. Releases • V. 1.0 Junho 2011 • V. 2.0 Setembro

    2011 • V. 3.0 Fevereiro 2012 • V. 4.0 Maio 2013 • V. 5.0 Fevereiro 2015 ◦ V. 5.8 Fevereiro 2019 • V. 6.0 Setembro 2019 • V. 7.0 Março 2020 • V. 8.0 Setembro 2020 ◦ V. 8.11 Outubro 2020
  6. Ambiente • Variáveis de Ambiente (.env) • Não salve dados

    sensíveis em arquivos de configuração • Os dados sensíveis devem ser armazenados no arquivo .env • Não se versiona o arquivo .env • env.example => template • Server embutido
  7. Routers e Controllers Routers • Ponto de entrada da sua

    aplicação • Mapeamento para os Controllers • Parâmetros • Métodos HTTP • Divisão em API e Web Controllers • Recebem e Respondem requisições • Responsável pela Lógica • Organização
  8. Models • Mapeamento Objeto Relacional • Relacionamento entre Entidades •

    Uma classe (ou entidade) representa um registro de uma tabela • As classes Models herdam métodos do Eloquent (find(). save(), etc..) • Mutators
  9. Eloquent • ORM • Implementação do padrão Active Record •

    Para cada tabela existirá uma classe Model • Métodos de acesso ao banco de dados • Ferramentas para a interação com o banco de dados
  10. Migrations e Seeders Seeders • Classes para gerar dados •

    Dados fictícios • Carga inicial de dados Migrations • Classes que representam o Mapeamento • Controle de versão • Consistência • Tabela para gerenciamento das Migrations
  11. Views e Blade Views • Responsável pela Lógica de Apresentação

    • Organização • Se comunica com os Controllers Blade • Template Engine para renderizar as views • Tags HTML e Tags Blade • Compilado e Cacheado • Permite código PHP • Reaproveitamento / Partials
  12. Session • Pacote Illuminate/Session já fornece uma implementação de Sessão.

    • helper global session() ◦ has() => verifica ◦ get() => captura ◦ put() => cria ◦ forget() => deleta ◦ flush() => limpa sessão ◦ flash() => sessão temporária
  13. Auth • Pacote Illuminate/Auth já fornece uma implementação básica de

    autenticação de usuários. • Registro / Login • Sessões de Usuário • Redefinição de senha • Permissões de Acesso • Helper Global Auth() make:auth
  14. Artisan • Ferramenta de linha de Comando • Realiza diversas

    tarefas • Customizável • Produtivo
  15. Illuminate e Componentes • A funcionalidade básica do Laravel é

    separada em uma série de componentes sob o namespace Illuminate. • Todos são extraídos com o uso do composer. • O Laravel também utiliza alguns pacotes e componentes do Symfony, assim como alguns pacotes desenvolvidos pela comunidade.
  16. Ciclo de Vida das Solicitações • Toda solicitação recebida é

    imediatamente convertida em um objeto Illuminate Request Esse objeto atravessa/interage entre as camadas e é retornado para o usuário o objeto Illuminate Response. • Toda aplicação Laravel tem algum tipo de definição de configuração no nível do servidor web, que captura cada solicitação web e a roteia para public/index.php. • o Kernel é o principal roteador de toda aplicação, sendo responsável por receber uma solicitação do usuário, processa-la por meio dos middlewares, manipular exceções e passá-la para o roteador de páginas e então retornar a resposta final.
  17. Injeção de Dependência • Utilização de Contêiner • Inversão de

    Controle • Via Construtor (__construct) • Helper global app() $user = app(User::class)
  18. Filas • Job => implementação de uma rotina • FIla

    => lista de jobs para executar • Worker => gerencia os jobs de uma fila
  19. Eventos Event Listeners • Rotina para notificar uma ação •

    podem ser acionados pelo próprio framework • Listeners => “escutar” alterações e disparar eventos • São baseados no padrão Observer ou Publish / Subscribe
  20. Middlewares • Mecanismo de filtragem de requisição HTTP. • Ele

    permite ou barra determinados fluxos de requisição que entram na sua aplicação, baseado em regras definidas.
  21. Helpers • Funções globais que facilitam a execução de tarefas

    comuns. Alguns Helpers mais utilizados: • Manipulação de Array => array() • Manipulação de String => string() • Paths/Caminhos => app_path() • Urls => action() / route() / url() • Miscelânea => abort() / config() / back() / dd() / env()
  22. Collections • Recurso novo e do framework • Manipulação de

    listas • Diminuem a complexidade ao manipular arrays • Implementam alguns métodos para facilitar o uso • Fornecem: mapeamento, redução, filtragem e outras operações em lista, que não existem nas manipulações de arrays nativo do php https://laravel.com/docs/8.x/collections
  23. Camada de Cache • Economia de requisições ao banco de

    dados. • Diversos tipos de Drive (file / redis / memcached). • O Laravel trabalha de maneira transparente com diferentes soluções de cache. • Basta configurar o drive desejado no arquivo de configurações e no arquivo .env e tudo funcionará sem a necessidade de alterar código.
  24. Vantagens e Desvantagens Vantagens • Facilidade e Simplicidade • Estruturado

    e Padrões PSR • Produtividade e Velocidade • Boas práticas de desenvolvimento • Documentação e Comunidade Desvantagens • Desenvolvedores de framework • Devido a facilidade no aprendizado não estudam o framework por completo • As constantes atualizações de certa forma complicam para se manter atualizado • O excesso de recursos fazem os desenvolvedor quererem utilizar tudo sem necessidade
  25. Enums • Camada para abstrair Constantes. • Classes que contém

    constantes onde geralmente guardam tipos ou valores. • Centralização dos dados.
  26. Utilize a Convenção do Framework • Utilize as ferramentas e

    recursos que o framework fornece. • Não reinvente a roda.
  27. Conclusão Tivemos um breve histórico, podemos ver o funcionamento básico

    do framework e como isso funciona na prática, além de alguns tópicos mais avançados e algumas boas práticas que podem auxiliar no dia a dia e pra fechar conhecer um pouco do ecossistema do framework php mais popular da atualidade. Através do Overview apresentado em cima do framework, podemos entender um pouco do por que ele ser considerado altamente produtivo, pois nos traz muitas ferramentas e implementações prontas que auxiliam e aceleram o desenvolvimento de aplicações.