seminar internet-technologie thema: smarty templates vortragender: christian voß datum: 11.01.2008
Post on 05-Apr-2015
119 Views
Preview:
TRANSCRIPT
Seminar Internet-TechnologieSeminar Internet-Technologie
Thema: Smarty Templates
Vortragender: Christian Voß
Datum: 11.01.2008
InhaltInhalt
• Was ist Smarty
• Der Entwicklungsprozess
• Was Smarty bietet
• Smarty Projekte – Ein Beispiel
• Die Debugging Konsole
• Smarty in der Praxis
• Fazit
• Quellenangabe
• Der PHP Quelltext• Konfigurationsdateien • Die Template Dateien
Was ist Smarty ?Was ist Smarty ?Smarty ist eine Templatesystem welches Programmieren und Designer ermöglicht getrennt an einem Projekt zu Arbeiten.
Smarty
Design
Datenbank
Logik
Klassischer Ansatz Mit SmartyDesigner
Datenbank Prog.
Logik Prog.
Der EntwicklungsprozessDer Entwicklungsprozess
• 1999 von Monte Orth und Andrei Zmievski erdacht
• Als PHP Bestandteilgedacht
• Ursprünglich in C entwickelt
• Erste PHP Version konnte nur reguläre Ausdrücke parsen
• Erstveröffentlichung 18.01.2001, enthielt bereits Caching
• Version 2.0 erschien im März 2002 wichtigste Neuheit: Plug-ins
• Version 2.6 veröffentlich am 19.11.2003
• Aktuelle Version 2.6.18 stammt vom 07.03.2007
• Dokumentation verfügbar in vielen Sprachen, seit Anfang März 2003 auch auf Deutsch
Was Smarty bietetWas Smarty bietet
Open Source Einfache
Install-ation
Sicher-heit
Debugger
Geschwin-digkeit
Plug-ins
Filter
Mehr-sprach-igkeit
Smarty
Installation
• Aktuelle Version zu finden unter www.smarty.net
• Systemvorrausetzungen: PHP >= 4.2.1
• Dateien entpacken, Pfade eintragen, fertig
Was Smarty bietet (2)Was Smarty bietet (2)
Sicherheit
• Designer können Logik/Datenbankcode nicht ändern
• Vielfältige Möglichkeiten Rechte zu beschränken
Debugger
• Smarty besitzt eine eigene Debugging Konsole
Geschwindigkeit
• Templates werden „compiliert“
• Seiten können gecachet werden
• Unter bestimmten Vorrausetzungen, schneller als pures PHP
Was Smarty bietet (3)Was Smarty bietet (3)
Plug ins
• Für viele Probleme existieren bereits fertige Lösungen
• Plug-ins bestehen aus php Dateien
• Dynamisches Laden von Plug-ins
• Arbeitsaufwand stark gemindert, da Code wiederverwendet werden kann
Filter
• Pre Filter
• Post Filter
• Output Filter
• Vielfältige Möglichkeiten zur Optimierung
Was Smarty bietet (4)Was Smarty bietet (4)
Mehrsprachigkeit
• Templates können einfach für verschiedene Sprachen angepasst/erstellt werden
• Integration der PHP gettext Funktion
Des weiteren bietet Smarty für Designer viele aus anderenSprachen bekannte Strukturen und Funktionen u.a.:
Was Smarty bietet (5)Was Smarty bietet (5)
• Schleifen• if, else, elseif• Arrays• Reguläre Ausdrücke• Mathematische Funktionen• Funktionen zur Vereinfachung von HTML Befehlen• Modifikation von Variablen• Integration von PHP, Javascript
Für Programmierer gibt es einige zusätzliche Funktionen,welche Schwachstellen in PHP verbessern, der Großteildes Quelltextes ist jedoch weiterhin reines PHP.
Smarty Projekte - Ein BeispielSmarty Projekte - Ein Beispiel
Erstellung folgender Webseite
Der Quelltext ist eine normale PHP Datei (hier ohne Logik, Datenbankzugriffe, etc) mit zusätzlichem Smartycode.
index.php
Smarty ist eine Klasse in PHP
Es gibt diverse Einstellungen
<?phprequire 'Smarty.class.php';$smarty = new Smarty; $smarty->compile_check = true;$smarty->debugging = true;
$smarty->assign("Namen", array("Christian Voß",
"Michael Klenke", "Eric Sternberg"));
assign (x,y)x = Variablen NameY = Variablen Werte
Smarty Projekte – Ein BeispielSmarty Projekte – Ein Beispiel Der PHP Quelltext
Es können alle bekannten PHP Datentypen zugewiesen werden, sowie ein und mehrdimensionale Arrays.
$smarty->assign("Themen", array("Christian Voß" =>array("smartylogo.jpg", "Smarty Templates"), "Michael Klenke" => array("javalogo.jpg", "Java Server-Pages(JSP)") "Eric Sternberg" => array("waplogo.jop", "WML (WAP)")));
$smarty->assign("datum", array(1000 => "11.01.2008", 1001 => "12.01.2008", 1002 => "18.01.2008"));
$smarty->assign("aktuelles_datum", 1000);
$smarty->display('index.tpl');?>
display(tlp) lädt das Template „tlp“
Smarty Projekte – Ein Beispiel Smarty Projekte – Ein Beispiel Der PHP Quelltext
Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielKonfigurationsdateien
Smarty kennt so genante Konfigurationsdateien, in denen konstante Werte für ein Projekt gespeichert werden können.
Konfigurationsdateien……sind optional…können verschiedene Sektionen haben…müssen in ein Template geladen werden…besitzen zu Klassen äquivalente Geltungsbereiche (scopes)…werden in Templates mit {#name#} eingesetzt
Für unser Beispiel verwenden wir folgende, sehr einfach gehaltene, Konfigurationsdatei:
title = seminar internet-technologie
seminar.conf
Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielDie Template Dateien
Projekte können aus beliebig vielen Dateien bestehen, welche untereinander geladen werden können, vergleichbar mit require Befehl aus PHP, bzw. include aus C.
Template Dateien bestehen aus normale HTML Code, welcher mit Smartybefehlen erweitert wird.
In unserem Beispiel haben wir 3 Dateien.
{config_load file=seminar.conf}<HTML><HEAD><TITLE>{$apptitle}</TITLE></HEAD><BODY bgcolor="#ffffff"><p align="center"><strong><font size="+4">{#title#|capitalize} </font></strong></p>
header.tlp
{$varname} greift auf die Inhalte von Variablen zu
Die eigentliche Hauptdatei, welche von index.php geladen wurde.
Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielDie Template Dateien
index.tlp
{include file="header.tpl" apptitle="Ein einfaches Smarty Beispiel"}<table width="100%" border="1">
{include file =„name“} lädt die mit Name angegebene Datei.Intern wird dabei der Quelltext der anderen Datei an die Stelledes includes kopiert.
Es können beliebig viele Parameter der Form varname=„text“ existieren, welche in der zu ladenden Datei die Variable varname mit dem Inhalt „text“ erzeugen.
Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielDie Template Dateien
For…each iteriert ein Array und bietet zusätzliche Informationen.
{html_image file} ersetzt den HTML Befehl <img src=>.
{foreach item=name from=$Namen} <tr> {foreach item=info from=$Themen[$name] name="inner"} {if $smarty.foreach.inner.first} <td width="20%" height="117">{html_image file=$info}</td> {else} <td width="80%"><p><strong><font size="+2">Thema: {$info}</p> Gehalten von: {$name}</strong></font></td> {/if} {/foreach} </tr>{/foreach}
Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielDie Template Dateien
html_options ist ein weiterer von vielen Befehlen die um- ständliche oder nicht vorhandene HTML Befehle ersetzen. Html_options erstellt dabei eine Combobox.
Weitere sind unter anderem:
• mailto (erzeugt verschlüsselte eMail Links)• math (ermöglicht mathematische Berechnungen)• popup (erzeugt ein Popup Fenster)
Anderes Datum wählen: {html_options name=datum_auswahl
options=$datum selected=$aktuelles_datum}
{include file="footer.tpl"}
Nach dem kompilieren entsteht je nach Einstellung eine PHP oder HTML Datei, welche zwar geöffnet werden kann, allerdingsschwer zu lesen ist, da keine Formatierungen existieren.
Smarty Projekte – Ein BeispielSmarty Projekte – Ein BeispielDie Template Dateien
Im Footer wird schließlich noch das aktuelle Datum/Uhrzeit angezeigt. Dies geschieht mit Hilfe der Funktion now; mit date_format wird das Anzeigeformat bestimmt
<br>Seite wurde erstellt: {$smarty.now | date_format:"%d.%m.%Y %H:%M:%S"}</BODY></HTML>
footer.tlp
Die Debugging KonsoleDie Debugging Konsole
Werte und
Datentypen
aller Variablen
werden hier
angezeigt, sowie
einige statistische
Informationen
Smarty in der PraxisSmarty in der PraxisAuf der Herstellerseite findet sich eine Liste mit Referenzseitendie Smarty verwenden. Bekannte Seiten lassen sich jedoch nurvereinzelt finden, obwohl Smarty inzwischen fast 6 Jahre alt ist.
Mögliche Gründe dafür könnten sein:
• Kein Bedarf an Template Systemen, oder bessere Alternativen
• Das MVC-Prinzip wird nicht vollständig umgesetzt
• Hohe Einarbeitungszeit, da sowohl Designer als auch Programmier eine zusätzliche Sprache lernen müssen
• Designer, die in der Lage sind die Smarty Logik zu verstehen, sollten ebenfalls in der Lage sein PHP direkt zu nutzen
• Smarty kann (vor allem bei falscher Anwendung) deutlich langsamer sein als pures PHP
• Mehraufwand bei der Projekterstellung
• Wenig Fachliteratur verfügbar
FazitFazitSmarty hat, wie so vieles, seine Vor- und Nachteile. Für bestimmte, eher einfache Projekte, ist es sicherlicheine Option Smarty zu verwenden. Den großen Durchbruch wird es jedoch vermutlich nicht erleben, dadie Nachteile teilweise doch sehr erheblich sind.
QuellenangabeQuellenangabeAlle hier aufgeführten Informationen stammen entweder von
http://www.smarty.net
oder aus dem Buch
„Smarty – PHP Template Programming and Applications“von Lucian Gheorghe, Hansin Hayder und Joao Prado MaiaHerausgegeben von Pack Publishing, 2006
top related