Twig pour PHP : Guide complet du moteur de templates Symfony
Twig est un moteur de templates moderne, rapide et sécurisé pour le langage PHP, développé par l'équipe Symfony. Il offre aux développeurs une syntaxe puissante mais intuitive pour séparer la logique de présentation (templates) de la logique métier de l'application. Twig résout un problème clé du développement web : le mélange du code PHP avec le HTML, qui conduit à un "code spaghetti" et réduit la lisibilité et la maintenabilité du projet.
L'objectif principal de Twig est de rendre les templates propres, sécurisés et faciles à lire. Contrairement au PHP pur, Twig limite le développeur dans l'exécution de code arbitraire à l'intérieur du template, ce qui prévient les vulnérabilités courantes comme les attaques XSS (Cross-Site Scripting), grâce à l'échappement automatique des sorties. Au lieu de constructions complexes <?php foreach(...): ?>, vous utilisez des {% for item in items %} concis, et à la place de <?= $var ?>, vous écrivez {{ var }}. Cela rend les templates accessibles aux intégrateurs et développeurs front-end qui ne connaissent pas PHP.
Twig est le standard de facto pour le framework Symfony, mais il s'intègre également parfaitement avec Laravel (via le package twigbridge), Drupal, WordPress et peut être utilisé comme bibliothèque autonome dans n'importe quel projet PHP. Grâce à des fonctionnalités telles que l'héritage de templates, les macros, le bac à sable (sandbox) et l'échappement automatique, Twig est l'un des moteurs de templates les plus populaires de l'écosystème PHP.
Installation
L'installation de Twig se fait via le gestionnaire de dépendances Composer. Assurez-vous que Composer est installé globalement.
composer require twig/twig:^3.0
Après avoir exécuté la commande, un dossier vendor/ et un fichier composer.json avec la dépendance ajoutée apparaîtront dans votre projet. Pour l'autochargement des classes, utilisez le fichier standard vendor/autoload.php.
Démarrage rapide : Exemple minimal fonctionnel
Créons un template simple et affichons-le. Structure du projet :
project/
├── templates/
│ └── hello.html.twig
├── vendor/
└── index.php
Template : templates/hello.html.twig
<!DOCTYPE html>
<html>
<head>
<title>Salutation</title>
</head>
<body>
<h1>Bonjour, {{ name }} !</h1>
<p>Nous sommes le {{ "now"|date("d/m/Y") }}.</p>
</body>
</html>
Script PHP : index.php
<?php
require_once 'vendor/autoload.php';
use Twig\Environment;
use Twig\Loader\FilesystemLoader;
// 1. Créer un chargeur qui pointe vers le dossier des templates
$loader = new FilesystemLoader('templates');
// 2. Créer l'environnement Twig
$twig = new Environment($loader, [
'cache' => 'cache', // Chemin pour le cache (recommandé)
'auto_reload' => true, // Rechargement automatique en cas de modification (pour le développement)
]);
// 3. Afficher le template en passant les variables
echo $twig->render('hello.html.twig', ['name' => 'le monde']);
?>
Ouvrez index.php dans votre navigateur. Vous verrez une page avec le titre "Bonjour, le monde !" et la date du jour.
Méthodes et fonctions principales de Twig
Voici les méthodes et constructions clés qui constituent la base du travail avec Twig.
1. Environment::render() — Affichage d'un template
Signature : public function render(string $name, array $context = []): string
Description : Méthode principale pour afficher un template. Elle prend le nom du fichier template (relatif à la racine du chargeur) et un tableau associatif de variables (contexte) qui seront disponibles à l'intérieur du template.
<?php
// Dans le template 'profile.html.twig', les variables $user et $age seront disponibles
echo $twig->render('profile.html.twig', ['user' => $user, 'age' => 30]);
?> Aussi dans la bibliothèque
DashMap Rust : guide complet avec exemples
Conteneur d'injection de dépendances pour Go (Golang) : Wire, Dig et Uber FX
Client Elasticsearch pour C# (.NET) : NEST et Elastic.Clients.Elasticsearch
GraphQL en Go : Guide complet de la bibliothèque gqlgen