Tutorial Amazon Web Services mit PHP – IV – Smarty

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>
Buch bestellen.
</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.

Ähnliche Beiträge

Tutorial phpUnderControl Zäumen wir einmal das Pferd von hinten auf, denn in unserem Falle heißt das Pferd nicht phpUnderControl, sondern CruiseControl. CruiseControl ist hier...
Test-Driven Development mit PHP Mit phpUnit gibt es bereits seit Jahren eine Methode zur testgetriebenen Entwicklung in PHP. Gerade bei der agilen Software-Entwicklung ist diese Meth...
PHP Code Snippets für komplexere Aufgaben Wieso das Rad neu erfinden? Große Teile einer Umsetzung bedeuten Copy&Paste - wer was anderes behauptet - naja - macht sich entweder zu viel Arbei...
Quality Assurance für PHP Sebastian Bergmann (ja, der von phpUnit) hat in seinem Blog einen interessanten Beitrag über Quality Assurance Tools für PHP veröffentlicht. Im Einzel...

2 Antworten auf „Tutorial Amazon Web Services mit PHP – IV – Smarty“

  1. @Adrian

    Mit dem Smarty->assign übergibst du Smarty eine Variable. Wenn du eine einfache Zuweisung machst, gilt die nur innerhalb von PHP, aber steht in Smarty nicht mehr zur Verfügung.

  2. Wirklich ein schönes Tutorial. Ich habe da eine Frage zum Nutzen von Smarty, der sich mir nicht erschließt. Man könnte doch anstatt:

    $smarty->assign( ‚book_title‘, ‚Dies ist der Buchtitel‘ );
    $book_title = „Dies ist der Buchtitel“;

    Das sieht mir auf den ersten Blick kompakter aus und hat denselben nutzen. Oder kann Smarty mehr?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.