Smarty ist in vielen PHP-Projekten noch vorhanden – nicht weil es eine gute Wahl ist, sondern weil es einfach nie jemand angefasst hat. Das System läuft, die Templates rendern, und niemand möchte derjenige sein, der etwas kaputt macht. Das Ergebnis: eine Template-Engine, die seit Jahren nicht mehr gewartet wird, die kaum noch jemand kennt, und die bei jedem neuen Entwickler für Stirnrunzeln sorgt.

Das eigentliche Problem: Angst vor dem Anfassen

Die Hürde bei Smarty ist selten technischer Natur. Das Template-System ist verständlich aufgebaut, und die Logik dahinter lässt sich nachvollziehen. Das eigentliche Problem ist fehlende Kenntnis darüber, was alles davon abhängt. Wie viele Templates gibt es? Welche Variablen werden wirklich genutzt? Welche Plugins wurden irgendwann mal selbst gebaut und existieren nur lokal?

Wer diese Fragen nicht beantworten kann, wird nichts anfassen. Und wer nichts anfasst, bleibt bei Smarty.

Smarty zu ersetzen ist keine Frage des Könnens. Es ist eine Frage, wann der Schmerz groß genug ist, um anzufangen.

Der schrittweise Ansatz: Strangler Fig für Templates

Eine vollständige Ablösung in einem Schritt ist in den meisten Projekten unrealistisch. Was funktioniert, ist das Strangler-Fig-Muster: Neue Seiten und Komponenten werden ohne Smarty gebaut, während bestehende Templates vorerst unangetastet bleiben.

  • Zunächst eine Bestandsaufnahme: Welche Templates existieren, welche werden tatsächlich aufgerufen?
  • Rendering-Logik vom Controller trennen – Smarty-Templates sollten keine Geschäftslogik enthalten. Falls doch, ist das der erste Ansatzpunkt.
  • Eine neue Rendering-Schicht einziehen, die parallel zu Smarty existiert – z.B. auf Basis von Twig oder reinem PHP.
  • Template für Template migrieren, immer mit direktem Test durch die Fachabteilung.

Twig als natürlicher Nachfolger

Twig hat eine ähnliche Syntax wie Smarty, ist aktiv gepflegt und gut dokumentiert. Die Migration von Smarty-Templates nach Twig ist oft überraschend direkt: Variable-Notation, Schleifen und Bedingungen sehen sehr ähnlich aus. Eigene Smarty-Plugins lassen sich in Twig-Extensions überführen.

Wer kein externes Framework möchte, kann auch auf native PHP-Templates zurückgreifen. Einfache include-Strukturen mit htmlspecialchars() sind für viele Anwendungsfälle vollkommen ausreichend – und haben keinen Overhead.

Fazit

Smarty ist kein technisches Schicksal. Es ist eine Entscheidung, die irgendwann einmal getroffen wurde – und die man revidieren kann, wenn man es schrittweise angeht. Der Schlüssel liegt nicht in der Template-Syntax, sondern im Mut, die erste Seite zu migrieren und dabei zu lernen, was wirklich dranhängt. Danach geht es meistens schneller als erwartet.