Daniel P.: vlibTemplate vs. smarty

Beitrag lesen

<?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.  
  
Zugegeben ist es ein schlechtes Beispiel. Die DB-Abfrage selbst würde ich in einer seperaten Logik-Datei packen und die while-Schleife bekäme ihre Daten dort heraus. Die Struktur geht bei PHP-Code genauso schnell verloren wie bei Smarty-Code. Zumindest habe ich diese Erfahrung bei größeren Projekten gemacht. Die Ausgabe bzw. der Code ist der Gleiche nur die Verpackung ist anders.  
  

> 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.  
  
Und das ist, was die meisten missverstehen. Es geht IMHO nicht um die Trennung der einzelnen Sprachen sondern um die Trennung von Design, Inhalt und Logik. Und wenn man das geschickt anstellt, beispielsweise über eine Logik-Datei für Abfragen und Ähnliches, gepaart mit dem Design; reines HTML, in das Logik und Inhalt eingebunden wird, kann man sich den Umweg über Template-Engines sparen.  
  

> 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.  
  
Habe nie was anderes behauptet - da stimme ich dir voll und ganz zu ;-)  
  

> 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.  
  
Doch. IMHO muss man Smarty ein Array übergeben, das dann in einer Schleife ausgegeben wird. Aber genau kann ich mich daran nicht mehr erinnern. Auf alle Fälle war es für meine Ansprüche absurd umständlich.  
  

> Die Heredoc-Syntax ist so ziemlich das schreckliste, was man sich antun kann.  
  
Nicht unbedingt. Wenn man es richtig macht, kommt eine Syntax, ähnlich der von Smarty, heraus.

-- 
Gruß, Daniel | In der Realität ist die Wirklichkeit ganz anders.