dedlfix: Templateengine PHP MVC

Beitrag lesen

echo $begrüßung;

Naja, die Überlegung ist ja, eine dieser drei Varianten [...]
zu ersetzen eben durch die Ersetzung in einem Template. Dadurch ensteht _eine_ zusätzliche Form der Variablencodierung (quasi ein Alias für eine Variable). Die Logik aber bleibt doch, wo sie vorher war, denn auch bei <?php echo Document::$title?> muss ja vorher der Wert gesetzt sein. Ob ich das durch eine PHP-Funktion "echo" mache, oder von PHP ersetzen lasse, ändert ja im Grunde die Sache eher marginal.

Es gibt zwei Logik-Bereiche (die uns an der Stelle interessieren). Der eine beschäftigt sich mit der Besorgung oder Berechnung von Daten, der andere mit der Logik, die zur Ausgabe benötigt wird. Die Ausgabe der in Teil 1, der Geschäftslogik, bereitgestellten Datensätze in einer Schleife ist Ausgabelogik, ebenso die Entscheidung, ob Fehlermeldung, Trösttext oder gar nichts angezeigt werden soll, wenn keine Daten vorliegen.

Gibt es Datensätze aus einer Abfrage, oder gibt es keine?
Soll bei einer leeren Menge eine entsprechende Meldung angezeigt werden, oder war etwa ein Fehler aufgetreten, über den berichtet werden soll?

Das waren Fragen, wie sie von der Ausgabelogik zu klären sind. Du solltest sie nicht beantworten. :-)

Da hätte ich jetzt gedacht, dass die Fehlerkontrolle a) sein muss und b) komplett unabhängig von der "Template-'engine'" wäre.

Das Abfangen der Fehler, die in der Geschäftslogik auftreten, ist deren Aufgabe. Doch gelegentlich entsteht der Wunsch, aufgetretene Fehler auch der Ausgabelogik zu übergeben, damit diese angezeigt werden können. Und dann hast du eine Entscheidung zu treffen, die mindestens "Anzeigen des Fehlermeldungsblocks oder nicht" lautet. Das ist keine Geschäftslogik mehr. In dem eine Ausgabemedium muss es benutzerfreundlich dargestellt werden, für bspw. eine WebService-Schnittstelle muss es automatisiert lesbar gestaltet werden.

Es braucht also vier Definitionen: öffnender und schließender Begrenzer für die Spalten/Variablennamen und selbiges für einen dynamischen Block.

Da brauchst du das Fahrrad nicht nochmal zu erfinden. Es gibt da aus PEAR die schon erwähnte HTML_Template_IT und eine erweiterte Variante HTML_Template_Sigma.

Mit denen hatte ich auch mal angefangen, bevor ich mich vom Gedanken, PHP und HTML ungeachtet der logischen Verarbeitungsschritte strikt trennen zu wollen, verabschiedet hatte.

Naja, ich hatte gedacht, dass man sich vielleicht auf Begrenzer für Templates "geeinigt" hätte wie beim CSV auf das Komma, die doppelten Hochkommas und den einfachen Absatz. Aber so richtig durchgesetzt hat sich da ja auch nischt. Möglich ja auch was wie <span class="placeholder">name</span>.

Es gliedert sich wohl grob gesehen in zwei Gruppen. Die eine macht es XML/SGML/HTML-ähnlich, mit dem Vorteil eventuelle Editoren und deren Syntax-Unterstützung nutzen zu können, die andere kocht ein eigenes Süppchen.

echo "$verabschiedung $name";