Blade PHP : guide complet avec exemples pratiques
1. Qu'est-ce que Blade et pourquoi l'utiliser ?
Blade est un moteur de templates puissant et élégant, intégré au framework Laravel. Il offre une syntaxe intuitive pour travailler avec des modèles HTML, permettant aux développeurs de séparer la logique de présentation de la logique métier de l'application. Contrairement au PHP pur, Blade propose des constructions concises pour les boucles, les conditions, l'héritage de templates et l'insertion de composants, rendant le code plus lisible et maintenable.
L'objectif principal de Blade est de simplifier la création de pages web dynamiques. Il compile les templates en code PHP standard, qui est mis en cache jusqu'à ce que le template soit modifié. Cela garantit des performances élevées, car aucune recompilation n'est nécessaire à chaque requête. Blade inclut également une protection intégrée contre les attaques XSS grâce à l'échappement des sorties (fonction {{ }}).
Blade est idéal pour les projets Laravel, mais peut également être utilisé de manière autonome (via le package jenssegers/blade). Il prend en charge l'héritage de templates (layout), les sections, les composants, les slots, les directives conditionnelles et bien plus encore. Grâce à sa simplicité et sa flexibilité, Blade est devenu le standard de facto pour la création de templates dans l'écosystème PHP.
2. Installation
Blade est fourni avec Laravel, donc aucune installation supplémentaire n'est nécessaire pour l'utiliser dans le cadre du framework. Si vous souhaitez utiliser Blade de manière autonome (par exemple, dans un projet sans Laravel), installez le package via Composer :
composer require jenssegers/blade
Après l'installation, vous devez créer une instance de la classe Blade et spécifier les chemins vers les templates et le cache :
use Jenssegers\Blade\Blade;
$blade = new Blade('views', 'cache');
echo $blade->render('index', ['name' => 'Monde']);
Où views est le dossier contenant les templates et cache le dossier pour les fichiers mis en cache.
3. Démarrage rapide — exemple minimal fonctionnel
Créez un fichier template views/hello.blade.php :
<!DOCTYPE html>
<html>
<head>
<title>Bonjour, {{ $name }} !</title>
</head>
<body>
<h1>Bienvenue, {{ $name }} !</h1>
@if (strlen($name) > 5)
<p>Vous avez un prénom long !</p>
@else
<p>Un prénom court et agréable.</p>
@endif
</body>
</html>
Créez maintenant un script PHP pour le rendu :
require 'vendor/autoload.php';
use Jenssegers\Blade\Blade;
$blade = new Blade('views', 'cache');
echo $blade->render('hello', ['name' => 'Alexandre']);
Résultat : une page HTML avec un message de bienvenue et un message conditionnel.
4. Méthodes/fonctions/classes essentielles
4.1. @extends — héritage de template
Signature : @extends('layout.name')
Fonction : Indique que le template courant hérite d'un autre template (parent).
Exemple :
<!-- 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', 'Page d\'accueil')
@section('content')
<h1>Bienvenue !</h1>
@endsection
4.2. @section et @yield — sections
Signature : @section('name', 'default') et @yield('name', 'default')
Fonction : Définit une section de contenu qui sera insérée dans le template parent via @yield.
Exemple :
<!-- parent.blade.php -->
<div>
@yield('sidebar', 'Barre latérale par défaut')
</div> Aussi dans la bibliothèque
Client Elasticsearch pour Swift (iOS/macOS) — guide complet
SwiftLint pour Swift : guide complet avec exemples
csv — Travailler avec des fichiers CSV en Rust
Mise en cache en Rust : Redis, Memcached et solutions intégrées
Client OAuth pour TypeScript : authentification via GitHub, Google et autres fournisseurs