Klaus: Template Engine als Class oder Funktion

Hallo,
also ich habe vor für ein kleines GB && News-Script eine Template Engine zu programmieren.

Diese muss nicht wirklich viel können:
-Template laden
-{Design_Tag} durch Werte aus einer DB ersetzen
-$variablen die vorher vom Code generiert wurden ersetzen [1]
-Per {include_datei} weitere Templates laden
-Kleinere IF-Anweisungs Tags
-PHP Funktionen aufrufen

Jetzt stellt sich für mich die Frage, ob ich das lieber als Funktionen realisieren soll, oder doch lieber als Class.
Der Script soll sowohl unter PHP4 als auch PHP5 Funktionfähig sein.

Nachteile einer Class wären ja, dass man ggf. Probleme zwischen PHP4 und PHP5 erhält. Außerdem wenn der User dort etwas anpassen möchte, wäre es für ihn doch bestimmt leichter wenn es als Funktion realsiert wird, oder?

Bisher war der Script als non-Template System verfügbar, also der HTML Code war innerhalb des PHP Codes.

Wie seht ihr das, was wäre eurer Meinung nach die bessere Lösung?

[1] Am besteht geht dies doch mit eval(), damit ich nicht jede Variable die in dem Template zu finden ist, per str_replace() o.ä. ersetzen lassen muss, oder?

Grüße
Klaus

  1. Hallo Klaus,

    also ich habe vor für ein kleines GB && News-Script eine Template Engine zu programmieren.

    Warum willst du das Rad neu erfinden? Verwende doch einfach Smarty oder ein beliebiges anderes Template-System.

    -{Design_Tag} durch Werte aus einer DB ersetzen

    bevor du fragst: mit Smarty kannst du auch eigene Funktionen schreiben, die eben auch Daten aus einer Datenbank holen können.

    Grüße aus Nürnberg
    Tobias

    1. Hallo,
      eigentlich wollte ich das im 1. Post noch hinzufügen, habs dann noch vergessen.

      Nein, ich möchte _keine_ vorhandene Template Class benutzen, weil:
      -Smarty fast größer als mein Script wäre
      -Ich die extra Funktionen von Smarty nicht brauche
      -Nur so lernt man, wenn man das Rad erneut erfindet. Warum ein GB programmieren, wenn es schon xxxxxx GB's im Internet gibt??

      Grüße
      Klaus

      1. Hallo Klaus,

        -Ich die extra Funktionen von Smarty nicht brauche

        _jetzt_ brauchst du sie nicht - aber weißt du ob du sie z.B. in einem Monat nicht doch brauchst? Außerdem musst du ja nicht das ganze plugins-Verzeichnis verwenden.

        -Nur so lernt man, wenn man das Rad erneut erfindet.

        Ich habe auch irgend wann mal angefangen ein Template-System zu entwickeln - nur sind mit der Zeit immer mehr Sachen dazugekommen, dass es mir zu kompliziert (und v.a. zeitaufwendig) wurde - also habe ich ein fertiges System genommen.

        Warum ein GB programmieren, wenn es schon xxxxxx GB's im Internet gibt??

        ein Gästebuch ist imho mit einem Templatesystem nicht zu vergleichen - ein Templatesystem ist ungleich komplexer als ein Gästebuch.

        Aber um auf deine Ursprungsfrage zurückzukommen:
        Ich würde es als Klasse schreiben - das hat nämlich den Vorteil, dass die Methoden und Eigenschaften sauber gekapselt sind und dir nicht im Hauptscript "dazwischenspucken" können. Klassen kannst du natürlich genauso unter PHP4 verwenden, du darfst eben nur nicht die php5-spezifischen Objekt-Sachen verwenden.

        Grüße aus Nürnberg
        Tobias