Cursos / Informática para Internet / Plataformas de aplicações Web / Aula

arrow_back Aula 05 - Plataformas full stack - Parte 2

Características básicas do Laravel

Roteamento

O roteamento no Laravel segue um padrão bem simples e pode ser configurado sem arquivos de roteamento complicados.

Um exemplo de uma rota no Laravel que responde na url /ola e retorna o conteúdo "mundo":

use Illuminate\Support\Facades\Route;

Route::get('/ola, function () {
    return 'Mundo';
});

As rotas são definidas (como visto acima) utilizando a linguagem PHP e os arquivos que contém essas rotas estão na pasta "routes" da aplicação que são automaticamente carregados pelo RouteServiceProvider. O arquivo routes/web.php definem as rotas que são para a interface web da sua aplicação (O Laravel suporta também tem outros tipos de interface, como o Console).

Descrição imagemArquivo de rotas padrão de uma aplicação exemplo Laravel. Fonte: Autor.

Como visto na imagem acima a aplicação padrão criada pelo Laravel define no arquivo routes/web.php uma rota com o método GET (Routes::get) que responde a "/" raiz do site e recebe um segundo parâmetro uma função PHP que retorna uma view chamada "welcome". Isso faz com que o arquivo resources/views/welcome.blade.php seja processado e seu conteúdo retornado ao navegador.

Todas as rotas são definidas dessa forma, com um comando que define o método da rota, a uri (caminho na URL da requisição) e uma função PHP chamada de função callback que executa quando a rota é atingida.

Para mais informações sobre rotas no Laravel acesse: https://laravel.com/docs/8.x/routing

Controllers

No lugar de definir funções de callback nas suas rotas, é possível redirecionar as url nas rotas para métodos de classes PHP especiais chamadas de controllers, tornando seu código mais organizado.

Um exemplo de um controller no Laravel:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Models\User;

class UserController extends Controller
{
    /**
     * Show the profile for a given user.
     *
     * @param  int  $id
     * @return \Illuminate\View\View
     */
    public function show($id)
    {
        return view('user.profile', [
            'user' => User::findOrFail($id)
        ]);
    }
}

Veja no exemplo do controller acima que foi criado uma classe chamada UserController que herda (extends) de Controller e tem um método chamado "show" que recebe um atributo chamado $id (variáveis em PHP começam com $).

Esse método "show" por sua vez retorna uma view chamada user.profile, que também por sua vez é um arquivo PHP dinâmico e é passado pra ele um dado chamado 'user' com o valor User::findOrFail($id), que é um comando especial do laravel que busca um usuário no banco através de um determinado ID passado. Esse User::findOrFail($id) faz parte da ferramenta de acesso a banco de dados do Laravel chamada Eloquent ORM. A renderização da página PHP com o user.profile terá acesso assim aos dados do usuário para exibir o HTML apropriado.

Uma rota que redireciona para esse Controller seria assim:

use App\Http\Controllers\UserController;

Route::get('/user/{id}', [UserController::class, 'show']);

Essa rota acima (o comando Route::get….) recebe o primeiro parâmetro como o formato da URI que casa com a rota, nesse caso /user/{id} e note que o {id} é um parâmetro dinâmico fazendo ela casar com /user/1, /user/2, /user/332 e assim por diante, tornando o número passado depois de /user o valor da variável "id" especificada. O comando recebe um segundo argumento que é uma associação chave => valor com a classe do Controller que será redirecionado o comando (UserController::class) e em seguida o nome do método que será executado nessa classe 'show', que receberá como parâmetro o id do usuário que está na URL.

Para estudar mais sobre Controllers no Laravel acesse: https://laravel.com/docs/8.x/controllers

Views

As views no Laravel são por padrão arquivos PHP localizados na pasta resources/views. O trabalho de uma view é ser processada e retornar um HTML como resultado final que será enviada ao navegador. Abaixo, um exemplo simples de uma view no Laravel:

<html>
    <body>
        <h1>Hello, {{ $name }}</h1>
    </body>
</html>

O arquivo PHP que contém essa view de exemplo poderia estar em resources/views/meu_perfil.blade.php, por exemplo, e como pode ser observado é uma mistura de HTML com código de programação.

Nesse exemplo acima é possível observar que existe um código diferente do visto em HTML: {{ $name }}

Esse {{ $name }} é um comando especial na view que dá a instrução para substituir esse trecho pelo valor da variável $name, passada pela rota ou controller que tentou processar essa view para retornar o resultado HTML gerada por ela para o navegador. Se o valor da variável $name for 'Joaquim', então a palavra Joaquim ficaria no lugar de {{ $name }} no resultado do HTML final gerado pela view.

Um exemplo de uma rota que solicitaria o processamento e retorno dessa view mostrada acima seria:

Route::get('/perfil', function () {
    return view('meu_perfil', ['name' => 'Joaquim']);
});

Note que essa rota responde a URL /perfil e retorna o HTML retornado pelo processamento da view 'meu_perfil' que é executada com a variável $name = 'Joaquim' por causa da associação chave-valor ['name' => 'Joaquim'] passada como argumento.

Para saber mais sobre views no Laravel acesse: https://laravel.com/docs/8.x/views

Blade templates

As views no Laravel usam uma motor de templates chamado Blade que tem uma série de funcionalidades que permite a criação de HTMLs dinâmicos de maneira simples.

PHP é uma linguagem famosa por ser facilmente integrada com o HTML. Arquivos PHP podem ser uma mistura entre PHP e HTML e é possível usar o PHP puro para criar HTMLs dinâmicos.

O Blade trás mais funcionalidades e facilidade na criação de páginas dinâmicas no Laravel, muito similar ao que o EJS faz com relação ao Javascript e HTML no processamento do lado do servidor.

Com o Blade é possível se criar blocos condicionais (ifs), Loops, classes condicionais, usar PHP puro no HTML, etc.

Para saber mais sobre o template Blade no Laravel acesse: https://laravel.com/docs/8.x/blade

Bancos de dados

O Laravel suporta diversos bancos de dados e o acesso a esses dados são realizados através de uma ferramenta inclusa chamada EloquentORM.

O EloquentORM é um ORM (Object-Relational Mapper) que facilita a interação com diversos bancos de dados. Quando você está utilizando o Eloquent, cada tabela tem um "Model" correspondente, que é utilizado para interagir com essa tabela, permitindo você obter os dados da tabela, inserir, remover e atualizar.

O Laravel tem uma ferramenta de linha de comando que permite, dentre outras coisas, que você crie novos Models através de comandos do terminal.

Para saber mais sobre o EloquentORM visite: https://laravel.com/docs/8.x/eloquent


Versão 5.3 - Todos os Direitos reservados