Donnerstag, 9. September 2010

Tutorial Amazon Web Services mit PHP – IV – Smarty

13. Mai 2009

WP Greet Box icon
Hallo! Um regelmäßig über Neuigkeiten auf dieser Seite informiert zu werden, kannst du den RSS-Feed abonnieren. Mehr Informationen über diese Technik gibt es hier.

Nachdem wir uns im letzten Teil des Tutorials mit dem Funktionscaching beschäftigt haben, besitzen wir nun alle notwendigen Werkzeuge, um Daten aus den Amazon Web Services abzuholen. Was jetzt eigentlich nur noch fehlt, ist die Darstellung der Daten auf einer HTML-Seite im eigenen Design. Wir könnten jetzt natürlich eine schöne HTML-Seite entwickeln und die Daten mit einem echo einfach ausgeben, aber in der Regel ist dies kontraproduktiv! Wenn man vernünftig mit PHP arbeiten will, trennt man stets den Programmcode vom Design, benutzt also Templates.

Auch hier braucht das Rad nicht neu erfunden zu werden, wir benutzen einfach Smarty. Bei Smarty handelt es sich um eine Klasse, die PHP zu Templates verhilft. Entsprechend haben wir nun zwei Dateien, die wir bearbeiten müssen: eine PHP-Datei, die den Programmcode enthält, und eine Template-Datei, die das Design erhält. Sehr einfach ausgedrückt läuft das Ganze so: Im Template setzt man Platzhalter in der Art von “Content hierhin” und in PHP sagt man, wie diese Platzhalter gefüllt werden sollen.

Gehen wir im weiteren davon aus, dass wir drei Platzhalter haben: einen Buchtitel, eine Beschreibung des Buches und einen URL-Link zur Bestellung des Buches bei Amazon. Entsprechend muss Smarty in PHP geladen werden, und die Platzhalter mit Inhalten gefüllt werden:

1
2
3
4
5
6
require( 'Smarty.class.php' );
$smarty = new Smarty();
$smarty->assign( 'book_title', 'Dies ist der Buchtitel' );
$smarty->assign( 'book_description', 'Dies ist die Beschreibung des Buchs' );
$smarty->assign( 'book_order_link', 'http://www.amazon.de' );
$smarty->display( 'template.tpl' );

Wie man sieht, ist Smarty recht intuitiv. Zuerst laden wir die Klasse, erstellen eine Instanz und weisen mit assign die Platzhalter zu. Mit display geben wir letztendlich das Template aus. Aber wie sieht das Template aus? Ganz einfach:

1
2
3
4
5
<div id="book">
<h2>{$book_title}</h2>
<p>{$book_description}</p>
<a href="{$book_order_link}">Buch bestellen.</a>
</div>

Wie man sieht, werden alle Smarty-Tags mit Mengenklammern versehen {}, so auch die Platzhalter. Dass $ kennzeichnet wie in PHP eine Variable. In unserem Beispiel würde demnach aus dem {$book_title} ein “Dies ist der Buchtitel” werden.

Templates sind in PHP gar nicht so schwer wie man denkt, und man sollte sie eigentlich immer verwenden. Das erspart einem übrigens auch einiges an Haare-Raufen, wenn man seinen Mitarbeitern nicht vermittelt bekommt, PHP-Code nicht zu ändern.

Nachdem wir nun alle notwendigen Werkzeuge zusammenhaben, werden wir im nächsten Teil all diese Techniken zusammen führen, und ein “Real-World-Beispiel” erstellen, in dem wir über die AWS die Daten eines beliebigen Buches abrufen und darstellen. Welches Buch es sein soll, entscheiden wir über eine ISBN-Nummer in der URL.


Was ist deine Meinung zu diesem Beitrag?