O desenvolvimento de aplicativos web e websites tem se tornado cada vez mais simples nos últimos anos. Mesmo os mais desafiados tecnologicamente entre nós se tornaram bastante adeptos de produtos como WordPress e Wix.

Para o desenvolvedor mais avançado, existe uma série de ferramentas para ajudar a simplificar o processo de desenvolvimento. Uma das mais úteis dessas ferramentas é Laravel.

Este artigo responde à pergunta “O que é Laravel?”, quebrando-o em uma visão geral dos conceitos básicos de frameworks PHP que são usados no desenvolvimento web. Seguiremos isso com uma visão geral das características do Laravel, uma lista de frameworks e componentes importantes do Laravel, e uma descrição de alguns dos pacotes mais úteis do Laravel.

O que é Laravel?

A resposta à pergunta: “O que é Laravel?” é simples: Laravel é um framework PHP de plataforma cruzada para a construção de aplicativos web.

Mas compreender verdadeiramente os benefícios do Laravel e seus usos requer um mergulho mais profundo. Laravel permite que um desenvolvedor tire proveito de uma grande biblioteca de funcionalidades pré-programadas (como autenticação, roteamento e modelos HTML). O acesso a esta biblioteca torna mais simples a construção rápida de aplicativos web robustas, minimizando ao mesmo tempo a quantidade de codificação necessária.

Laravel oferece um ambiente de desenvolvimento altamente funcional, bem como interfaces de linha de comando intuitivas e expressivas. Além disso, a Laravel utiliza o mapeamento objeto-relacional (ORM) para um acesso e manipulação de dados mais simples.

Os aplicativos Laravel são altamente escaláveis e têm bases de código fáceis de manter. Os desenvolvedores também podem acrescentar funcionalidade ao seus aplicativos, graças ao sistema modular do Laravel e ao robusto gerenciamento de dependência.

Laravel é Frontend ou Backend?

Laravel é principalmente um framework de desenvolvimento backend, embora ofereça alguma funcionalidade frontend. Muitas das características do Laravel, no entanto, são agnósticos front-end.

Laravel é uma linguagem de programação?

Laravel é um framework PHP e usa uma linguagem de script em vez de ser uma linguagem de programação PHP rígida. Embora as linguagens de scripting e as linguagens de programação estejam relacionadas, elas têm várias diferenças perceptíveis, principalmente na facilidade de uso e na velocidade de execução.

As linguagens de scripting são linguagens específicas da plataforma, interpretadas. Em contraste, as linguagens de programação são linguagens agnósticas de plataforma, compiladas. Sendo específicas da plataforma, as linguagens de script dependem do compilador da aplicativos na qual estão trabalhando.

Aplicativos construídos usando linguagens de script são compiladas em tempo de execução, o que significa que cada instrução é interpretada individualmente em tempo de execução, tornando o aplicativo mais lenta do que um aplicativo pré-compilada. A compilação em tempo de execução também resulta na parada ou desligamento do aplicativo se ela encontrar um erro em tempo de execução; em contraste, os aplicativos pré-compiladas realizam a verificação de erros durante a compilação, tornando-as mais robustas em tempo de execução. Para muitos usuários, porém, as desvantagens das linguagens de script são mais do que compensadas pela facilidade de uso e iteração.

O que é um framework PHP?

PHP (um acrônimo recursivo para PHP Hypertext Preprocessor) é uma linguagem de scripting de código aberto, do lado do servidor, amplamente utilizada para o desenvolvimento web. Desde o início de 2021, quase 80% de todos os websites estão usando PHP. Enquanto muitos podem não estar familiarizados com PHP, todos estão familiarizados com um dos mais conhecidas aplicativos PHP – WordPress.

Um framework PHP fornece um conjunto de bibliotecas de código contendo módulos pré-programados que permitem a um usuário construir aplicativos mais rapidamente. Elas oferecem aos desenvolvedores web uma série de benefícios, incluindo um desenvolvimento mais rápido, uma necessidade reduzida de escrever código e maior segurança. Elas também ajudam os desenvolvedores novatos a construir boas práticas de codificação, uma vez que requerem uma organização específica do código. Além disso, os frameworks PHP normalmente requerem menos manutenção do que os aplicativos construídos a partir do zero.

Muitas frameworks modernas de PHP são orientadas a objetos. Por causa disso, é benéfico ter uma compreensão básica de conceitos como classes, objetos e herança antes de mergulhar em um framework .

Um diagrama MVC. (Fonte: Wikipedia)
Um diagrama MVC. (Fonte: Wikipedia)

Os frameworks  PHP utilizam uma arquitetura Model-View-Controller (MVC). Para aqueles não familiarizados com a arquitetura MVC, o Modelo são os dados para o aplicativo, juntamente com toda a lógica associada. Uma tabela de assinantes, por exemplo, pode ser um Model. O View fornece um ponto de interação com um usuário, onde os dados do Model podem ser visualizados e modificados. O Controlador é um conduto entre a Visão e o Modelo. Em outras palavras, o Controlador recebe as solicitações do usuário, recupera as informações necessárias do Modelo, processa-as e as devolve à Vista.

Aplicativos PHP, tais como WordPress, têm algumas vulnerabilidades conhecidas. Os exemplos mais notáveis são a injeção de código e a injeção SQL. Laravel inclui características que ajudam a prevenir a injeção de SQL e outros ataques.

Entretanto, os desenvolvedores devem empreender esforços adicionais, tais como testes de penetração, para garantir a segurança de seus aplicativos. De acordo com a especialista em TI Barbara Ericson da Cloud Defense, a segurança de aplicativos web consiste em testes de penetração e firewalls de aplicativos web, que andam lado a lado.

Os testes de penetração destinam-se a ser testes mais complexos realizados por profissionais qualificados em cibersegurança, que tentarão invadir seu sistema sem nenhum conhecimento prévio do seu desenvolvimento, a fim de identificar vulnerabilidades de segurança inigualáveis.

Por que você deve usar Laravel?

Tendo respondido “O que é Laravel?”, a próxima pergunta é: “Por que Laravel?” Laravel fornece um grande conjunto de ferramentas robustas que ajudam a tornar o processo de desenvolvimento de aplicativos web mais fácil e rápido, e as bases de código do aplicativo final são bem estruturadas e de fácil manutenção.

Alguns dos benefícios específicos do Laravel são:

Laravel é fácil de aprender

Laravel é relativamente fácil de aprender, dado o contexto adequado. Laravel requer uma compreensão geral dos conceitos de PHP e programação orientada a objetos (OOP) para uma utilização eficaz. Conhecer pelo menos um pouco de HTML também é útil. E para qualquer arquitetura MVC, também é útil compreender sistemas de gerenciamento de bancos de dados relacionais, tais como MySQL ou PostgreSQL.

Laravel simplifica o processo de desenvolvimento

Desde o início, Laravel foi projetado para simplificar tarefas que são comuns em uma variedade de projetos de desenvolvimento web como roteamento, autenticação, migração, cache e muito mais. Laravel torna simples integrar módulos pré-fabricados em um aplicativo, usando interfaces de linha de comando intuitivas e expressivas e o Composer.

Laravel também tem uma extensa coleção de documentação on-line, o que é um bom ponto de partida para desenvolvedores mais experientes. Uma grande variedade de recursos de aprendizado online direcionados a todos os níveis de habilidade também está disponível.

Laravel tem ferramentas para desenvolvedores de todos os níveis

Laravel se descreve como uma estrutura progressiva, o que significa que inclui uma variedade de funcionalidades que os usuários de todos os níveis acharão úteis. Por exemplo, os iniciantes têm acesso a starter kits para módulos como recursos básicos de autenticação. Muitas dessas ferramentas são discutidas em maiores detalhes abaixo.

Estrutura do projeto Laravel. (Fonte: ITSolutionStuff.com)
Estrutura do projeto Laravel. (Fonte: ITSolutionStuff.com)

Os usuários mais experientes podem aproveitar os motores por trás dos kits de partida para construir seus próprios processos de autenticação e integrá-los com seu frontend preferido.

Laravel evolui facilmente

Laravel é altamente escalável. Com suporte integrado para sistemas de cache rápidos e distribuídos, os aplicativos Laravel são capazes de atender a milhões de solicitações por mês. A Laravel também oferece uma plataforma de implantação sem servidor, Vapor, que é baseada em AWS e oferece um alto grau de escalabilidade.

Laravel Tem um Ecossistema e uma Comunidade Massiva

Laravel tem um ecossistema tremendo, apoiado por uma grande comunidade de desenvolvedores. Como Laravel é um dos frameworks PHP mais utilizados, a biblioteca de aplicativos e pacotes Laravel disponíveis é substancial. Tanto os pacotes oficiais Laravel como os pacotes de terceiros estão prontamente disponíveis.

Os pacotes oficiais da Laravel (muitos dos quais são discutidos abaixo) incluem autenticação, gerenciamento de servidores, cobrança de assinaturas, testes e automação de navegadores, e muito mais. Os pacotes de terceiros estão disponíveis em vários sites, incluindo Packalyst e Laravel News.

Há também uma enorme quantidade de informações disponíveis da comunidade de desenvolvedores de Laravel. Os desenvolvedores com perguntas certamente encontrarão uma resposta visitando um dos muitos fóruns do Laravel, como Laravel.io, The Laravel subreddit, e Laracasts.

Laravel é muito utilizado

Muitas empresas utilizam Laravel para ajudar a construir sites altamente funcionais:

Vacations by Rail é um site de planejamento de viagens de trem construído utilizando o framework PHP do Laravel. Ele também está integrado ao motor de reserva da Softrip.

Férias por ferrovia usa Laravel sob o capô.
Férias por ferrovia usa Laravel sob o capô.

O site Setapp de aplicativos curados para Mac e iOS também é construído usando o framework PHP Laravel.

SetApp é construído com Laravel.
SetApp é construído com Laravel.

O aplicativo de busca de restaurantes do site Restaurants.com é muito intuitivo de usar, graças ao fato de ser construído usando os modelos de aplicativos móveis Laravel.

Restaurantes.com é alimentado por Laravel.
Restaurantes.com é alimentado por Laravel.

O que Laravel faz?

O conjunto de características do Laravel é muito extenso para ser totalmente coberto nesta breve visão geral. Algumas das características mais significativas incluem:

Manuseio de rotas

Laravel oferece um manuseio de rotas simples e intuitivo, usando nomes simples para identificar rotas em vez de nomes de caminhos longos. O uso de identificadores de rota também facilita a manutenção dos aplicativos, já que o nome da rota pode ser alterado em um único lugar em vez de ter que ser alterado ao longo do caminho. Todas as rotas de interface web em um aplicativo Laravel são registradas no arquivo routes/web.php.

Segurança

Laravel inclui uma série de recursos de segurança, incluindo autenticação do usuário, autorizações de funções de usuário, verificação de e-mail, serviços de criptografia, hashing de senha e recursos de redefinição de senha.

Migração

Laravel fornece controle de versão para bancos de dados de aplicativos usando migrações. As migrações rastreiam como um banco de dados foi modificado ao longo do tempo, facilitando a destruição ou recriação do banco de dados quando necessário.

Modelagem

Blade é o motor de modelagem PHP do Laravel. Os motores de templates PHP ajudam a dividir a lógica comercial dos templates HTML, resultando em uma base de código que é mais facilmente mantida. Muitas das características do Laravel dependem dos templates Blade. Blade oferece mais funcionalidades do que outros motores de templates porque Blade permite o uso de código PHP simples, o que outros não permitem.

Sessões

Laravel utiliza sessões para armazenar informações sobre o usuário através de várias solicitações. Os cookies são um exemplo de um driver de sessão integrado do Laravel.

Validação de dados

Laravel torna simples a validação dos dados de entrada do usuário. Laravel inclui uma série de regras de validação de dados, com mensagens de erro personalizáveis.

Manuseio de Cache

Laravel suporta o cache de dados para minimizar os tempos de processamento de tarefas do aplicativo. O API de cache da Laravel suporta uma variedade de backends de cache de terceiros, como Memcached e Redis.

Tratamento de erros

O tratamento de erros é configurado automaticamente ao iniciar um novo projeto Laravel. Os aplicativos Laravel podem ser executadas em modo de depuração, gerando mensagens de erro detalhadas para todos os erros que ocorrem.

Teste

Laravel oferece números substanciais de testes fora da caixa. A Laravel suporta testes unitários, que testam seções pequenas e isoladas de código do aplicativo, bem como testes de recursos, que testam seções maiores de código e funcionalidade de nível superior.

Armazenamento e gerenciamento de arquivos

Laravel usa o pacote Flysystem PHP para fornecer drivers para trabalhar com uma variedade de sistemas de arquivos, desde sistemas de arquivos locais até armazenamento baseado em nuvem, como o Amazon S3. A Laravel também fornece transferência de arquivos com o SSH File Transfer Protocol (SFTP).

Email

Laravel inclui uma API de e-mail baseada na biblioteca SwiftMailer, que permite o envio de e-mails através de um serviço de escolha. Laravel suporta anexos de e-mail e enfileiramento de e-mails.

Notificações

Laravel suporta o envio de notificações através de uma série de canais, sejam canais bem conhecidos, como SMS ou Slack, ou utilizando canais desenvolvidos pela comunidado Laravel.

Como funciona o Laravel?

Para entender melhor o que Laravel pode fazer, é importante entender como Laravel lida com os pedidos, ou seja, o ciclo de vida do pedido. Como discutido acima, Laravel é baseado na arquitetura MVC, e responde às solicitações dos usuários, que o controlador utiliza para recuperar e processar dados do modelo e apresentar as informações de volta ao usuário em uma visão.

Um pedido entra em um aplicativo Laravel através do arquivo public/index.php, que carrega o resto da estrutura e recupera uma instância do aplicativo Laravel. Após a recuperação da instância do aplicativo, a solicitação é encaminhada para o kernel do console ou para o kernel HTTP.

Entre outras tarefas, o núcleo define uma seleção de bootstrappers que executam tarefas que devem ser concluídas antes do tratamento de solicitações, bem como define qualquer middleware que as solicitações devem passar antes do tratamento. Entre estas tarefas de pré-manuseio está o carregamento de qualquer prestador de serviços necessário para o aplicativo.

Uma vez que o bootstrapping esteja completo e os provedores de serviços tenham sido registrados, a solicitação passa para o roteador, que então direciona a solicitação para uma rota ou para um controlador. Além disso, o roteador executa qualquer middleware de rota específica necessária. Após a solicitação passar por todo middleware necessário, a execução de uma rota ou método de controlador retorna uma resposta que passa de volta através da corrente para a View.

Como começar a trabalhar com Laravel?

Para começar com Laravel, é necessário compreender algumas das estruturas e funcionalidades mais importantes em Laravel.

Contêineres de serviço

O container de serviço é um dos componentes principais do Laravel. Os recipientes de serviço gerenciam as dependências de classe e a injeção de dependência.

Recipientes de serviço Laravel. (Fonte: Christopher Rumpel)
Recipientes de serviço Laravel. (Fonte: Christopher Rumpel)

Os recipientes de serviço são onde um desenvolvedor liga tudo o que é necessário para executar um aplicativo Laravel.

Prestadores de serviços

Igualmente importantes são os prestadores de serviços Laravel, que são onde as classes e dependências são injetadas nos recipientes de serviço.

Fachadas

Uma fachada é uma interface estática para classes ligadas no contêiner de serviço. As fachadas criam facilidade de uso, fornecendo uma sintaxe facilmente memorizável como um substituto para um nome de classe longo.

Pacotes

Os pacotes são como a funcionalidade é adicionada ao Laravel. Há tanto pacotes independentes quanto pacotes específicos de aplicativos. Os prestadores de serviços dizem à Laravel onde carregar os recursos dos pacotes.

Laravel, como muitas outras ferramentas de desenvolvimento local, conta com a Docker. O Docker é uma ferramenta baseada em contêineres que permite aos desenvolvedores criar e implantar mais facilmente seus aplicativos. Usando containers Docker, um desenvolvedor embala seu aplicativo com suas dependências, e a implanta como um pacote único.

Interfaces da Linha de Comando

Laravel inclui um conjunto de interfaces de linha de comando (CLIs). O Console Artisan inclui comandos que ajudam os desenvolvedores a rapidamente construir códigos de esqueleto, simplificar e automatizar tarefas repetitivas, e mais facilmente completar a construção de um aplicativo. Sail é uma interface de linha de comando mais leve, introduzida no Laravel 8. Sail permite ao desenvolvedor interagir com o Docker, o ambiente de desenvolvimento padrão do Laravel.

Laravel Artisan CLI. (Fonte: tutorialspoint.com)
Laravel Artisan CLI. (Fonte: tutorialspoint.com)

Eloquent

Eloquent é um mapeador objeto-relacional (ORM) que permite fácil interação com bancos de dados. Usando a arquitetura MVC, os modelos correspondem a tabelas individuais em um banco de dados. Com o Eloquent, os desenvolvedores podem ter certeza de uma recuperação rápida, inserções e atualizações simples e definição intuitiva dos relacionamentos.

Composer

O Composer é uma ferramenta de gerenciamento de dependência de PHP em nível do aplicativo de terceiros. O Composer gerencia as bibliotecas, módulos e plug-ins requeridos por um aplicativo Laravel.

Homestead

Laravel Homestead é um ambiente de desenvolvimento que permite o desenvolvimento em uma máquina virtual, fornecendo uma caixa Vagrant pré-embalada. Homestead inclui tudo o que é necessário para o desenvolvimento de aplicativos Laravel, incluindo PHP, MySQL, Nginx, Composer, Redis, e muito mais, portanto o desenvolvedor não precisa instalar estes pacotes em sua máquina local. Homestead requer a instalação do Vagrant e do VirtualBox ou do Parallels.

Kits iniciais de autenticação

Laravel inclui uma série de pacotes para ajudar a colocar os desenvolvedores em funcionamento rapidamente. Antes de mergulhar, você pode querer rever alguns dos muitos recursos disponíveis para aprender Laravel. Laravel inclui um par de kits iniciais para ajudar o desenvolvedor a implementar rapidamente funcionalidades comuns.

Laravel Breeze é um kit inicial de autenticação. Inclui recursos comuns de autenticação e conta de usuário, como registro de usuário, login, verificação de e-mail e confirmação e redefinição de senha. Breeze também inclui um frontend javascript através da Vue. Breeze tem uma camada de visualização padrão que usa modelos Blade e Tailwind CSS.

Para características de autenticação mais avançadas, Laravel oferece agora o Jetstream, introduzido pela primeira vez na Versão 8. Além dos recursos encontrados no Breeze, o Jetstream também oferece recursos avançados adicionais, como autenticação de dois fatores, gerenciamento de sessão, suporte API via Laravel Sanctum e gerenciamento de equipe opcional.

Para desenvolvedores que preferem usar seu próprio frontend de autenticação, Laravel oferece Fortify-um backend de autenticação que é frontend agnóstico. Fortify é o motor do kit inicial de autenticação Jetstream e inclui todos os recursos de autenticação Laravel (por exemplo, registro de usuário, login, verificação de e-mail, autenticação de dois fatores, etc.). Fortify não é o motor subjacente para o Laravel Breeze.

Laravel também oferece autenticação baseada na mídia social (OAuth) através do Laravel Socialite.

Para desenvolvedores que querem implantar seus aplicativos com o mínimo de configuração de servidor ou, na verdade, querem implantar sem servidor, a Laravel oferece Forja e Vapor. A Forja permite a implantação através de uma variedade de provedores de infra-estrutura com o mínimo de esforços de configuração. A Vapor é uma plataforma de implantação sem servidor baseada em AWS.

Para aqueles que procuram dar o próximo passo, os desenvolvedores podem implantar aplicativos Laravel através do seu próprio website auto-hospedado. Isto porque a auto-hospedagem do seu website exigirá que você configure vários bancos de dados definidos com um único comando PHP (usando a versão mais recente) e acesso SSH ao servidor. Laravel oferece ambos em um framework PHP de código aberto, e como um bônus adicional, é bastante fácil de instalar.

O que mais Laravel pode fazer?

A melhor pergunta poderia ser: “O que Laravel não pode fazer?”. Existem milhares de pacotes que cumprem qualquer número de funções. Alguns dos pacotes oficiais do Laravel mais interessantes são:

Cashier e Spark

Laravel Cashier fornece uma interface para serviços de cobrança por assinatura da Stripe and Paddle. O Cashier também fornece funcionalidade avançada de assinatura, como cupons e períodos de carência de cancelamento.

O Cashier é o motor da Laravel Spark, um painel de gerenciamento de faturamento que permite aos usuários criar e gerenciar suas assinaturas. A Spark também está limitada a Stripe e Paddle como provedores de pagamento; os provedores personalizados ainda não são compatíveis com o Spark. O Spark, no entanto, permite que o desenvolvedor escolha seu frontend.

Valet

Laravel Valet é um ambiente de desenvolvimento MacOS focado na velocidade e uso mínimo de recursos (cerca de 7 MB de RAM). Valet não se destina a ser um substituto completo para Vela ou Homestead. Ao invés disso, ele é destinado a usuários com necessidades específicas e limitações de recursos.

Para mais pacotes, consulte o site da Laravel ou Packalyst.

Laravel agora

A versão atual de Laravel é a versão 9, lançada inicialmente em fevereiro de 2022. Esta versão inclui uma série de novos recursis e melhorias. Algumas das novas características na versão 8 incluem Laravel Jetstream, job batching (permite a execução de um lote de trabalhos, seguido do desempenho de ações definidas), componentes Dynamic Blade (permite a renderização de componentes em tempo de execução com base em um valor de tempo de execução), e uso do CSS Tailwind por padrão no paginador Laravel, entre outros. Também foram feitas melhorias no modo de limitação de taxas e manutenção.

No passado, novos lançamentos de Laravel aconteciam a cada seis meses. Entretanto, isto resultou em muitas perguntas, comentários e confusão sobre o novo processo de lançamento de Laravel. Com o lançamento do Laravel 9, em fevereiro de 2022, a framework passou para um ciclo de lançamento de 12 meses.

Resumo

Os desenvolvedores que buscam o desenvolvimento rápido e simples de aplicativos web devem considerar o aprendizado do Laravel. Laravel fornece um amplo e robusto conjunto de recursos que simplifica o processo de desenvolvimento, eliminando a necessidade de codificar muitas tarefas comuns a partir do zero.

Laravel também oferece um ambiente de desenvolvimento virtual seguro e interfaces intuitivas de linha de comando. E como Laravel é simples de aprender e tem uma forte comunidade de apoio e ecossistema, é uma escolha natural para muitos desenvolvedores, sejam eles iniciantes ou especialistas com anos de experiência.