Slide 1

Slide 1 text

Produtividade com Laravel Framework

Slide 2

Slide 2 text

● 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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Parte I - Um Pouco do Framework

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

Filosofia ● Framework Moderno ● Curva de Aprendizagem Baixa ● Alta Produtividade ● Boas Práticas de Desenvolvimento ● Foco na Simplicidade ● Excelente Documentação ● Implementa Padrões PSR

Slide 7

Slide 7 text

Popularidade 26 de Outubro de 2020

Slide 8

Slide 8 text

26 de Outubro de 2020 Popularidade

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Curiosidades

Slide 11

Slide 11 text

Curiosidades https://elephpant.me

Slide 12

Slide 12 text

Curiosidades € 249.00 = R$ 1.676,57 (hoje 29/10/20 - R$ 6,73)

Slide 13

Slide 13 text

Parte II - Básico do Framework

Slide 14

Slide 14 text

MVC User Request Routing Controller View Model Database

Slide 15

Slide 15 text

Estrutura

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Active Record Pattern

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Artisan ● Ferramenta de linha de Comando ● Realiza diversas tarefas ● Customizável ● Produtivo

Slide 26

Slide 26 text

Artisan

Slide 27

Slide 27 text

#showmethecode

Slide 28

Slide 28 text

Parte III - Avançando no Framework

Slide 29

Slide 29 text

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.

Slide 30

Slide 30 text

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.

Slide 31

Slide 31 text

Injeção de Dependência ● Utilização de Contêiner ● Inversão de Controle ● Via Construtor (__construct) ● Helper global app() $user = app(User::class)

Slide 32

Slide 32 text

Filas ● Job => implementação de uma rotina ● FIla => lista de jobs para executar ● Worker => gerencia os jobs de uma fila

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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.

Slide 35

Slide 35 text

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()

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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.

Slide 38

Slide 38 text

Parte IV - Arquitetura e Algumas Boas Práticas

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

Repository Pattern

Slide 41

Slide 41 text

Service Layer Pattern

Slide 42

Slide 42 text

Enums ● Camada para abstrair Constantes. ● Classes que contém constantes onde geralmente guardam tipos ou valores. ● Centralização dos dados.

Slide 43

Slide 43 text

Utilize a Convenção do Framework ● Utilize as ferramentas e recursos que o framework fornece. ● Não reinvente a roda.

Slide 44

Slide 44 text

Parte V - Ecossistema

Slide 45

Slide 45 text

Documentação https://laravel.com/docs/8.x

Slide 46

Slide 46 text

API https://laravel.com/api/8.x/index.html

Slide 47

Slide 47 text

Comunidade

Slide 48

Slide 48 text

Laracast https://laracasts.com

Slide 49

Slide 49 text

Projetos e Pacotes

Slide 50

Slide 50 text

https://lumen.laravel.com

Slide 51

Slide 51 text

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.

Slide 52

Slide 52 text

Referências Teóricas

Slide 53

Slide 53 text

Dúvidas

Slide 54

Slide 54 text

twitter.com/IgorSantoos17 linkedin.com/in/igorsantoos17 github.com/IgorSantos17 medium.com/@IgorSantos17 speakerdeck.com/igorsantos Contatos

Slide 55

Slide 55 text

#junteseamanada