Amigos, temos ótimas notícias. Em agosto, nós da OTUS lançamos um novo curso - “Framework Laravel” , mas havia tantas pessoas que queriam estudar que nem todo mundo conseguiu entrar no grupo. Um novo fluxo começa no final de outubro! Estamos esperando por todos e, tradicionalmente, às vésperas do início do curso, compartilhamos material útil.

Neste artigo, vamos nos familiarizar com os fundamentos teóricos do Laravel - com o próprio framework, com sua história e com os conceitos e conceitos básicos que são usados nele. Este artigo é destinado a iniciantes que já dominam o básico do PHP, tentaram escrever seu primeiro site, por exemplo, com um pequeno sistema CMS, mas ainda não tentaram trabalhar com estruturas PHP e não entenderam as principais vantagens que eles oferecem.
Portanto, o Laravel é uma estrutura da Web relativamente nova (a primeira versão ocorreu em 2011). O Laravel tirou o melhor de outra estrutura de back-end, como o Rails, mas agora o Laravel já o superou em termos de popularidade. No momento da redação deste artigo, a versão mais recente é 6.

Não é uma estrutura, mas um ecossistema inteiro
O que isso significa? Se você já esteve envolvido no desenvolvimento do Frontend antes, eu compararia o Laravel com o Angular: literalmente, a partir de uma linha que gera um novo projeto para você, você tem quase tudo na caixa (é claro, sem a parte de front-end do projeto, mas mais 2-3 equipes e isso acabará sendo no lugar). No que diz respeito ao desenvolvimento do PHP, o Laravel tem quase tudo o que você pode querer criar um aplicativo backend confiável: PHPUnit é uma estrutura para teste, Artisan é uma interface de linha de comando para migração de banco de dados, criação de modelo e outras configurações aplicativos, um servidor Homestead integrado, no qual você pode criar um ambiente virtual, além de trabalhar com roteamento, processar middleware, bem como uma visualização de vinculação confortável com os modelos Blade.
Vamos tentar analisar todos os conceitos complexos em ordem.
Lembro que: este artigo é apenas uma introdução teórica para iniciantes. Exemplos práticos estarão nas seguintes partes .
Homestead
A filosofia do Laravel é fornecer a você o número máximo de ferramentas práticas prontas para uso, além de ser conveniente, confiável e fácil de usar. É por isso que Homestead é um dos primeiros a ser mencionado na documentação.
O Laravel Homestead é um Vagrant - box pré-instalado. O que é isso O leitor provavelmente usou os assemblies do XAMPP, Abyss Web Server ou baixou todas as peças necessárias para o servidor funcionar (Apache, PHP, PHPMyAdmin, MySQL e muito mais) independentemente. Você pode encontrar a lista completa de instaladas dentro do Homestead
aqui . Por que isso é feito dessa maneira? O Homestead cria um tipo de "ambiente virtual" que é executado no mesmo ambiente que no servidor e com os mesmos programas. Homestead recria rápida e facilmente suas caixas "virtuais", e você não precisa se preocupar por muito tempo se quebrar acidentalmente algo.
No entanto, Homestead Laravel não termina aí. Se você estiver usando o Mac OS, precisará experimentar o Valet minimalista, que não possui tantas funções prontas para uso, mas é muito mais fácil de instalar. E também um grande número de pacotes adicionais - este é um ecossistema inteiro!

Migração de banco de dados
A frase "Migração de banco de dados" parece muito assustadora para iniciantes. Espero que o leitor saiba para que serve o banco de dados (em princípio, obviamente, para armazenar informações) e até mesmo tenha escrito em sua vida algo mais do que
"SELECT * FROM Customers" nos comandos SQL. Isso deve ser o suficiente.
Portanto, a migração é um tipo de sistema de controle para transferir suas tabelas para a KB usando o construtor de tabelas. A migração permitirá evitar erros e conflitos durante a construção de tabelas no banco de dados para um projeto grande junto com membros de outra equipe. Além disso, isso permitirá que você interaja com o banco de dados, não usando ferramentas como MySQL WorkBench ou PhpMyAdmin, mas diretamente do código, dependendo das necessidades do seu projeto nas tabelas de dados. A adição e remoção de tabelas é registrada no histórico de migrações e agora pelo menos os timlids terão uma dor de cabeça a menos.


ORM
ORM é um sistema de mapeamento objeto-relacional que associa bancos de dados a conceitos de programação orientados a objetos.
Parece assustador à primeira vista, mas isso está diretamente relacionado à migração de bancos de dados: cada classe tem sua própria classe - um modelo usado apenas para trabalhar com esta tabela. Isso permite não gerar trabalho desnecessário no próprio banco de dados, mas interagir com ele novamente diretamente do projeto. Como resultado, resulta mais conveniente e mais confiável. Obviamente, levará algum tempo para dominar os comandos e os recursos da geração de modelos, mas será necessário muito mais para criar um projeto grande com um grande número de tabelas.
Modelos Blade: uma visualização conveniente da visualização
Blabe - modelos oferecem uma oportunidade de vincular convenientemente suas visualizações da visualização. Aqui está como seria no PHP nativo:
<?php include($_SERVER['DOCUMENT_ROOT']."/shop/includes/header.inc.php"); ?> <div class="catalog"> <div class="catalog-filters"> </div> <div class="catalog-products"> </div> <div class="catalog-pagination"> </div> </div> <?php include($_SERVER['DOCUMENT_ROOT']."/shop/includes/footer.inc.php"); ?>
<html> <head> </head> <body> @extends('header') @extends('catalog') @extends('footer') </body> </html>
Concordo, parece muito mais arrumado! Obviamente, esse é o código do controlador e exporta do restante dos modelos Blade, mas em um projeto grande, será apenas mais conveniente.

Bom assistente Artisan
O Artisan é uma interface de linha de comando que acompanha o Laravel. Permite gerar modelos, controladores, novos testes, notificações - diretamente da linha de comando. Isso é muito mais conveniente do que copiar um modelo de classe de algum lugar ou até mesmo escrever com canetas de algum lugar.
Teste de aplicação
Se você deseja desenvolver seus projetos por meio do TDD / BDD (desenvolvimento por teste / desenvolvimento por comportamento), existe o PHPUnit no kit (há suporte para testes como Navegador / Unidade / Recurso) e um pacote para gerar conteúdo falso do Faker (útil, por exemplo, ao testar o banco de dados, porque você não precisa preenchê-lo com conteúdo, que o usuário normalmente adiciona lá).
Muitas coisas agradáveis
Deseja que a autenticação através das redes sociais apareça rapidamente no seu aplicativo? Sem problemas, o Laravel Socialite corre para o resgate. Deseja configurar o cache? Não tem problema, pronto para uso. Você tem muitos projetos hospedados em vários serviços VPS? Laravel Forge no lugar. Precisa de WebSockets, por exemplo, para bate-papo? Não tem problema E assim pode continuar por muito tempo.
Por que devo ensinar este Laravel?
Agora o Laravel, sem dúvida, ocupa a posição do framework PHP mais importante. Agora, de acordo com o Github, os repositórios do Laravel estão em torno de 195k contra 35k no Yii e 43k no Symfony. Essa pode não ser a comparação mais honesta, mas por que não experimentar o Laravel?