Twig für PHP: Die ultimative Anleitung zur Symfony-Template-Engine
Twig ist eine moderne, schnelle und sichere Template-Engine für PHP, entwickelt vom Symfony-Team. Sie bietet Entwicklern eine leistungsstarke, aber dennoch intuitive Syntax, um die Präsentationslogik (Templates) von der Geschäftslogik der Anwendung zu trennen. Twig löst ein zentrales Problem der Webentwicklung: die Vermischung von PHP-Code mit HTML, die zu "Spaghetti-Code" führt und die Lesbarkeit sowie Wartbarkeit des Projekts beeinträchtigt.
Das Hauptziel von Twig ist es, Templates sauber, sicher und leicht lesbar zu machen. Im Gegensatz zu reinem PHP schränkt Twig den Entwickler bei der Ausführung von beliebigem Code innerhalb des Templates ein. Dadurch werden typische Sicherheitslücken wie XSS-Angriffe (Cross-Site Scripting) durch automatisches Escaping der Ausgabe verhindert. Statt komplexer Konstrukte wie <?php foreach(...): ?> verwenden Sie prägnante {% for item in items %}, und statt <?= $var ?> nutzen Sie {{ var }}. Das macht Templates auch für Designer und Frontend-Entwickler zugänglich, die kein PHP beherrschen.
Twig ist der De-facto-Standard für das Symfony-Framework, lässt sich aber auch hervorragend in Laravel (über das Paket twigbridge), Drupal, WordPress integrieren oder als eigenständige Bibliothek in jedem PHP-Projekt verwenden. Dank Funktionen wie Template-Vererbung, Makros, Sandbox und automatischem Escaping ist Twig eine der beliebtesten Template-Engines im PHP-Ökosystem.
Installation
Die Installation von Twig erfolgt über den Dependency-Manager Composer. Stellen Sie sicher, dass Composer global installiert ist.
composer require twig/twig:^3.0
Nach der Ausführung des Befehls finden Sie in Ihrem Projekt den Ordner vendor/ und die Datei composer.json mit der hinzugefügten Abhängigkeit. Für das automatische Laden der Klassen verwenden Sie die Standarddatei vendor/autoload.php.
Schnellstart: Minimales Arbeitsbeispiel
Erstellen wir ein einfaches Template und geben es aus. Die Projektstruktur sieht so aus:
project/
├── templates/
│ └── hello.html.twig
├── vendor/
└── index.php
Template: templates/hello.html.twig
<!DOCTYPE html>
<html>
<head>
<title>Begrüßung</title>
</head>
<body>
<h1>Hallo, {{ name }}!</h1>
<p>Heute ist der {{ "now"|date("d.m.Y") }}.</p>
</body>
</html>
PHP-Skript: index.php
<?php
require_once 'vendor/autoload.php';
use Twig\Environment;
use Twig\Loader\FilesystemLoader;
// 1. Erstellen Sie einen Loader, der auf den Template-Ordner verweist
$loader = new FilesystemLoader('templates');
// 2. Erstellen Sie die Twig-Umgebung
$twig = new Environment($loader, [
'cache' => 'cache', // Pfad für Caching (empfohlen)
'auto_reload' => true, // Automatisches Neuladen bei Änderungen (für die Entwicklung)
]);
// 3. Rendern Sie das Template und übergeben Sie Variablen
echo $twig->render('hello.html.twig', ['name' => 'Welt']);
?>
Öffnen Sie index.php im Browser. Sie sehen eine Seite mit der Überschrift "Hallo, Welt!" und dem aktuellen Datum.
Wichtige Twig-Methoden und -Funktionen
Im Folgenden finden Sie die wichtigsten Methoden und Konstrukte, die die Grundlage der Arbeit mit Twig bilden.
1. Environment::render() — Template rendern
Signatur: public function render(string $name, array $context = []): string
Beschreibung: Die Hauptmethode zur Ausgabe eines Templates. Sie nimmt den Dateinamen des Templates (relativ zum Loader-Root) und ein assoziatives Array von Variablen (Kontext) entgegen, die innerhalb des Templates verfügbar sind.
<?php
// Im Template 'profile.html.twig' sind die Variablen $user und $posts verfügbar
echo $twig->render('profile.html.twig', ['user' => $user, 'posts' => $posts]);
?>