O que é Laravel? Porque usá-lo?

João Roberto da Paixão
Desenvolvendo com Paixão
6 min readFeb 11, 2017

Laravel é um framework de desenvolvimento rápido para PHP, livre e de código aberto. Cuja o principal objetivo é permitir que você trabalhe de forma estruturada e rápida.

Aproveitando o gancho do último post, onde falei um pouquinho sobre O que é framework? E porque você precisa de um? . Hoje, vou ceder o espaço para comentar sobre uma das minhas especialidades, o framework Laravel.

O Laravel é um framework de desenvolvimento rápido para PHP, livre e de código aberto. Cuja o principal objetivo é permitir que você trabalhe de forma estruturada e rápida.

Gosta de código bonito? Quem utiliza Laravel também gosta! Como o próprio slogan diz: “O framework PHP para artesões da web”.

O Laravel tira a monotonia do desenvolvimento web. Ele fornece todas as ferramentas necessárias para que você possa começar programando o que for necessário, ele foi construído para ser simples e fácil de aprender.

O Laravel é sem sombras de dúvidas, um dos frameworks mais populares da atualidade (não somente no mundo PHP), possui uma equipe de desenvolvedores ativa e extremamente competente, além de ter uma gigantesca comunidade e bastante aceitação no mercado.

Com uma rápida pesquisa no Google Trends, podemos comprovar a crescente popularidade do Laravel.

Mas, porque devo usar Laravel? O que torna ele tão bom assim?

Ok! Já sabemos que ele é o framework mais badalado da atualidade, para muitos, isso já é um baita argumento para começar a utiliza-lo, para outros, nem tanto… Sendo assim, vou apresentar alguns pontos:

Composer

O Laravel utiliza o Composer para gerenciar suas dependências, algo que praticamente toda aplicação PHP moderna faz. O Composer é um incrível gerenciador de dependências, uma ferramenta que permite gerenciar, de forma fácil, os pacotes de terceiros da sua aplicação. (Já estou escrevendo um post pra falar sobre o Composer)

Para fazer a instalação, basta executar o comando no terminal:

composer create-project laravel/laravel

P.S(Vou detallhar a instação do Laravel (Windowns, Linux e Mac) nos próximos artigos).

Documentação

Até na documentação, o Laravel se destaca! Ela é bastante intuitiva e você consegue encontrar de forma fácil praticamente tudo que precisa saber para começar e se aprofundar em todos os recursos disponíveis pelo framework.

http://laravel.com/docs

Sistema de rotas

Com o Laravel, podemos trabalhar facilmente com o conceito de rotas. De forma bem simplória, as rotas fazem o mapeamento da URL digitada no navegador para alguma ação dentro da sua aplicação.

Route::get('hello', function () {
return 'Hello World';
});

Podemos registrar rotas que respondem a qualquer verbo HTTP:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

Além disso, o sistema de roteamento nos permite trabalhar com:

  • Parâmetros de rotas(Opcionais ou não);
//Exemplo de rota com parâmetro opcional.
Route::get('welcome/{name?}', function ($name = 'visitante') {
return "Seja bem vindo $name!";
});
  • Restrições de parâmetros com expressões regulares
Route::get('welcome/{name}', function ($name) {
//
})->where('name', '[A-Za-z]+');
  • Agrupamento de rotas (Prefixo, Subdomínio, Namespace, Middleware);

//Rotas agrupadas por subdomínio
Route::group(['domain' => '{account}.myapp.com'], function () {
Route::get('user/{id}', function ($account, $id) {
//
});
});

Além de recursos mais avançados. Para mais detalhes consulte a documentação.

Blade — Sistema de templates

O Blade é o compilador de templates do Laravel (template engine). A diferença dele para outros templates é a sua flexibilidade, o Blade não restringe o uso de PHP puro misturado a syntaxe do template. Os arquivos blade devem utilizar a extensão .blade.php .

O grande objetivo do Blade é reduzir a quantidade de código PHP inserido no meio do HTML e aumentar o reúso, para isso, ele disponibiliza uma serie de diretivas que são inseridas junto ao código HTML de acordo com a necessidade da página.

Os dois principais benefícios do uso do Blade são a herança e as seções, permitindo trabalhar facilmente com o conceito de master page. Vejamos o código baixo:

<!-- master.blade.php -->

<html>
<head>
<title>Exemplo de arquivo Blade</title>
</head>
<body>
<div class="container">
@yield('conteudo')
</div>
</body>
</html>

Esse código representa a estrutura da nossa master page.

Agora vamos implementar página dashboard.blade.php que irá herdar esse layout.

<!-- dashboard.blade.php -->

@extends('master')

@section('conteudo')
<p>O conteúdo do nosso dashboard vem aqui!</p>
@endsection

Nessa página estamos herdando toda a estrutura da nossa master page utilizando a diretiva @extends , além de injetar o conteúdo específico da página através da diretiva @section .

Para renderizar esse exemplo fictício, poderíamos criar a seguinte rota:

Route::get('dashboard', function () {
return view('dashboard');
});

Consulte a documentação para obter mais detalhes sobre o Blade.

Eloquent e QueryBuilder

O Eloquent é o ORM padrão do Laravel, ele aplica o Design Patter ActiveRecord onde cada tabela de banco de dados é representada no código através de uma classe “Model” que é usado para interagir com essa tabela. Os Models permitem a consulta de dados em suas tabelas, bem como, operações de insert,update e delete.

Qual a vantagem disso? Você consegue implementar sua aplicação sem ter que escrever SQL puro misturado ao código.

Vamos ver um exemplo bem simples:

  • Supondo que temos uma tabela com o nome ‘Post’ em nossa base de dados, a primeira coisa a se fazer é criar um Model Eloquent pra essa tabela
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
/**
* A tabela que será associada ao Model.
*
* @var string
*/
protected $table = 'post';
}

Para fazer uma listagem de todos os registros dessa tabela, basta invocar o método all() que faz parte do Eloquent, veja:

Route::get('posts', function () {
// Corresponde a "SELECT * FROM post"
return Post::all();
});

Obviamente, o Eloquent disponibiliza uma serie de métodos além do all(), dentre vários outros recursos (relacionamentos, collections, mutators e etc…) para conhecer todos eles, recomendo mais uma vez, recorrer a documentação.

QueryBuilder

Ok, você conheceu o Eloquent e mesmo assim não quer trabalhar com tal nível de abstração? Talvez o QueryBuilder seja uma boa pra você.

Como o próprio nome já diz, o QueryBuilder é um construtor de querys, ele pode ser usado para executar a maioria das operações de banco de dados.

Vamos fazer um refactory do exemplo anterior utilizando o QueryBuilder:

Use Illuminate\Support\Facades\DB;Route::get('posts', function () {
// Corresponde a "SELECT * FROM post"
return DB::table('post')->get();
});

Agora, o mesmo exemplo utilizando SQL puro:

Use Illuminate\Support\Facades\DB;Route::get('posts', function () {
return DB::select('SELECT * FROM post');
});

Para mais detalhes, documentação!

Artisan Console

O Artisan é uma interface de linha de comando que fornece vários comandos para facilitar o desenvolvimento da aplicação. Para visualizar todos os comandos disponíveis basta digitar no terminal:

php artisan list

Além de todos os comandos disponíveis, você pode criar seus próprios comandos.

P.S(Para fins didáticos, foram omitidos alguns trechos de código em quase todos os exemplos.)

Minhas considerações

Neste post apresentei alguns pontos que considero serem os diferencias do Laravel em comparação com outros frameworks, obviamente o Laravel possui vários recursos bem legais que não foram citados aqui.

Quem me conhece sabe da minha admiração por esse framework, a final de contas, ele é meu parceiro no desenvolvimento web desde 2014… Já até recebi o apelido de “lara-man” rsrs…

Vale ressaltar que cada framework tem suas particularidades e propósitos, dependendo da necessidade, talvez o Laravel não seja a melhor opção. Mas, se você está em busca de um novo framework PHP, porque não dar uma chance ao Laravel?

--

--

João Roberto da Paixão
Desenvolvendo com Paixão

Eterno aprendiz que compartilha aquilo que aprende. Apaixonado por tecnologia, desenvolvimento pessoal e investimentos. Pai de família, um cara tranquilo =) !