Twig pour PHP : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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]);
?>

Recommendations