Gunnar Bittersmann: Pro/Contra Smarty

Beitrag lesen

@@Karl Heinz

1. Smarty ist ein PHP Aufsatz und macht das System deshalb langsamer.

Wenn man gut strukturierten Code schreibt (OOP), springt man auch innerhalb von PHP von Methode zu Methode und macht das System langsamer. Schneller wäre Spaghetti-Code – das will man aus guten Gründen nicht. Lesbarkeit und Wartbarkeit des Codes gehen hier vor der geringen(!) Geschwindigkeitseinbuße.

Dasselbe gilt für eine Template-Engine: wenn’s das System besser verständlich = besser wartbar macht, dann her damit!

2. Verwendet man zusätzlich Smarty muss man den Syntax von PHP UND Smarty lernen.

Die Syntax, weiblich.

Und so kompliziert und umfangreich ist die Syntax einer Template-Sprache nun auch nicht; der Lernaufwand ist minimal.

Außerdem kommt eine Template-Engine an der Schnittstelle von Backend und Frontend zum Einsatz – da, wo Daten ins HTML geschrieben werden. Also an der Stelle, wo sich die Arbeit von Backend-Entwicklern und Frontend-Entwicklern überlappt. Wenn da eine Template-Engine zum Einsatz kommt, muss ein Frontend-Entwickler überhaupt kein PHP lernen, sondern nur die Template-Sprache (zusätzlich zu HTML, CSS und ggfs. JavaScript, versteht sich).

Würde man nur PHP verwenden

Das heißt: PHP als Template-Engine. Kann man machen – dann aber bitte in der Form, wie ich sie hier für die Stelle, wo HTML generiert wird, immer predige: Keine HTML-Tags mit echo generieren; PHP in HTML schachteln, nicht andersrum. Also nicht

<?php
echo "<output>$answer</output>";
?>

oder

<?php
echo '<output>' . $answer . '</output>';
?>

sondern

<output><?php echo $answer ?></output>

oder auch kurz

<output><?= $answer ?></output>

Zusammen mit den Kontrollstrukturen in alternativer Syntax(!) hat man dann genau die Mächtigkeit einer Template-Sprache.

<ul>
<?php foreach ($results as $result): ?>
	<li><?= htmlspecialchars($result) ?></li>
<?php endforeach; ?>
</ul>

in Smarty:

<ul>
{foreach $results as $result}
	<li>{$result|escape}</li>
{/foreach}
</ul>

Kleiner Pluspunkt für die Template-Sprache: die einfachere Syntax.

Großer Pluspunkt für die Template-Sprache: der beschränkte Sprachumfang. Man kann nur das verwenden, was man an der Stelle (der Ausgabe) verwenden sollte. Bei PHP könnte man in Versuchung kommen, da Dinge zu tun, die nichts mit der Ausgabe zu tun haben. Der Einsatz einer Template-Engine zwingt zu sauberer Programmierung.

LLAP 🖖

--
„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann