Blade para PHP: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Blade para PHP: guia completo com exemplos práticos

1. O que é e para que serve

Blade é um poderoso e elegante template engine que faz parte do framework Laravel. Ele oferece uma sintaxe conveniente para trabalhar com templates HTML, permitindo que desenvolvedores separem a lógica de apresentação da lógica de negócios da aplicação. Diferente do PHP puro, o Blade fornece construções concisas para loops, condicionais, herança de templates e inserção de componentes, tornando o código mais legível e fácil de manter.

O principal objetivo do Blade é simplificar a criação de páginas web dinâmicas. Ele compila os templates em código PHP comum, que é armazenado em cache até que o template seja modificado. Isso garante alta performance, pois não é necessário recompilar a cada requisição. O Blade também inclui proteção embutida contra ataques XSS através da sanitização da saída (função {{ }}).

O Blade é ideal para projetos em Laravel, mas também pode ser usado separadamente (através do pacote jenssegers/blade). Ele suporta herança de templates (layout), seções, componentes, slots, diretivas condicionais e muito mais. Graças à sua simplicidade e flexibilidade, o Blade se tornou o padrão de fato para template engine no ecossistema PHP.

2. Instalação

O Blade já vem incluído no Laravel, portanto, para usá-lo dentro do framework, não é necessária instalação adicional. Se você quiser usar o Blade separadamente (por exemplo, em um projeto sem Laravel), instale o pacote via Composer:

composer require jenssegers/blade

Após a instalação, você precisa criar uma instância da classe Blade e definir os caminhos para os templates e o cache:

use Jenssegers\Blade\Blade;

$blade = new Blade('views', 'cache');
echo $blade->render('index', ['name' => 'Mundo']);

Onde views é a pasta com os templates e cache é a pasta para os arquivos em cache.

3. Início rápido — exemplo mínimo funcional

Crie o arquivo de template views/hello.blade.php:

<!DOCTYPE html>
<html>
<head>
    <title>Olá, {{ $name }}!</title>
</head>
<body>
    <h1>Bem-vindo, {{ $name }}!</h1>
    @if (strlen($name) > 5)
        <p>Você tem um nome longo!</p>
    @else
        <p>Nome curto e bonito.</p>
    @endif
</body>
</html>

Agora crie um script PHP para renderizar:

require 'vendor/autoload.php';

use Jenssegers\Blade\Blade;

$blade = new Blade('views', 'cache');
echo $blade->render('hello', ['name' => 'Alexandre']);

Resultado: uma página HTML com saudação e mensagem condicional.

4. Principais métodos/funções/classes

4.1. @extends — herança de template

Assinatura: @extends('layout.nome')

O que faz: Indica que o template atual herda de outro template (pai).

Exemplo:

<!-- layouts/app.blade.php -->
<html>
<head>
    <title>@yield('title')</title>
</head>
<body>
    @yield('content')
</body>
</html>

<!-- pages/home.blade.php -->
@extends('layouts.app')

@section('title', 'Página inicial')

@section('content')
    <h1>Bem-vindo!</h1>
@endsection

4.2. @section e @yield — seções

Assinatura: @section('nome', 'padrão') e @yield('nome', 'padrão')

O que faz: Define uma seção de conteúdo que será inserida no template pai através de @yield.

Exemplo:

<!-- parent.blade.php -->
<div>
    @yield('sidebar', 'Barra lateral padrão')
</div>
<div>
    @yield('content')
</div>

<!-- child.blade.php -->
@extends('parent')

@section('sidebar')
    <ul>
        <li>Item 1</li>
        <li>Item 2</li>
    </ul>
@endsection

@section('content')
    <p>Conteúdo principal da página.</p>
@endsection

Recommendations