Smarty Template Engine

Aus UUGRN
Version vom 31. März 2006, 20:51 Uhr von Anna (Diskussion | Beiträge) (ein anfang)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Die Template Engine Smarty ist eine PHP-Bibliothek unter der LGPL. Sie ermöglicht bei der Entwicklung von Webapplikationen die Trennung von Code und Ausgabe. Die Ausgabe ist meist HTML kann aber jedes textbasierte Dateiformat sein XML, LATEX usw... .

Smarty Basic

Smarty hat im Angebot der Templatesysteme eine kleine Besonderheit. Es verarbeitet Templates nicht in zwei sondern in drei Schritten. Dies produziert auf den esten Blick ein wenig overhead beschleunigt die verarbeitung von Scripen wesentlich. Die meisten Systeme Funktionieren auf dem Prinzip Ausdruck suchen und ersetzen (Ein Bsp. Listing 1).

Listing 1 - Simpel Beispiel

foo.php

<?php
 $tpl_var_foo = 'bar';
 $tpl_file = 'foo.tpl.html';
 $tpl = implode(' ',file($tpl_file));
 $tpl = preg_replace("'#foo#'i",$tpl_var_foo,$tpl);
 echo $tpl; 
?>

foo.tpl.html

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>ein Simpler Test</title>
</head>
<body>
  <h1>Der Simpler Test</h1>
  <p>Hier sollte jetzt der Inhalt aus $tpl_var_foo echscheinen: <strong>#foo#</strong></p>
</body> 
</html>

Ausgabe von foo.php

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>ein Simpler Test</title>
</head>
<body>
  <h1>Der Simpler Test</h1>
  <p>Hier sollte jetzt der Inhalt aus $tpl_var_foo echscheinen: <strong>foo</strong></p>
</body> 
</html>

Smarty setzt das HTML-Template erst nach PHP um. D.H. aus leicht verständlichem (auch für Webdesigner) HTML wird ein gemisch aus PHP und HTML. Dieses ergebnis wird in einer seperaten Datei Abgespeichert. Solange sich das HTML Template nicht änder wird dies auch nicht mehr geparst sondern direkt das erzeugte PHP-Skript erzeugt.