Moin!
Finde ich schon einfacher also in der PHP-Datei mit den echos zu arbeiten...
Sicher?
Ja, absolut.
> <?php
> while($row = mysql_fetch_assoc) {
> ?>
> <tr>
> <td><?php echo $row['entry'] ?></td>
> <tr>
> <?php
> }
> ?>
Das mischt Datenbankabfrage und HTML-Ausgabe im PHP-Code. Funktioniert, klar. Hat aber den entschiedenen Nachteil, dass man sowohl die Struktur des HTML-Codes aus den Augen verliert, wenn es komplizierter wird, als auch die Struktur des PHP-Codes.
Mit einer Template-Engine kann man sich im PHP-Code auf die Datenabfrage konzentrieren (die man dann einfach in die Engine kippt, und fertig), während man sich im Template darauf konzentrieren kann, wie die (irgendwie, aber wie genau, ist jetzt nicht weiter wichtig) aus der Datenbank abgefragten Daten dargestellt werden sollen.
... ist für mich das Gleiche wie:
{smartyschleife for=bla from=$wasauchimmer item=entry}
<tr>
<td>{$entry}</td>
<tr>
{/smartyschleife}
Der Unterschied ist: Mit einer Templateengine trennst du HTML und PHP. Und erleichterst dir damit das Programmieren, weil die Trennung von HTML und PHP auch eine Trennung der Zuständigkeiten ist, und durch die Template-Engine dazu führt, dass es ein eindeutig definiertes Interface gibt, welches die Aufgabe hat, zwischen Datenverarbeitung (PHP) und Datendarstellung (Templateengine) zu vermitteln.
Es ist guter Programmierstil, Teilaufgaben eines Gesamtsystems so zu kapseln, dass diese komplett unabhängig sind vom Rest. Das dämmt Abhängigkeiten ein, erleichtert den Überblick und die Fehlersuche.
Nicht zu vergessen, dass man die Smarty-Schleife noch mit den entsprechenden Daten füttern muss, was IMHO bei PHP wegfällt.
Ich bin sicher, man kann Smarty einfach das DB-Handle mit dem Ergebnis übergeben, und Smarty wird sich einfach alle Datensätze aus der Datenbank ziehen und darstellen. Ein zwischengeschobenes Array o.ä. ist nicht notwendig.
Außerdem gibt es für PHP noch Heredoc.
Die Heredoc-Syntax ist so ziemlich das schreckliste, was man sich antun kann.
- Sven Rautenberg
"Love your nation - respect the others."