T-REx 2.2.0 TemplateEngine
Es ist soweit! T-REx 2.2.0 released.
Nach einem Monat ist nun endlich die neue Version fertig.
Track: syncom.org/svn/trex/
Dokumentation: julian-stier.de/referenz.htm
Download:
Mirror Syncom:
syncom.org/svn/trex/T-REx%202.2.0.zip | 22.9KB
syncom.org/svn/trex/T-REx%202.2.0.ace | 19.9KB
syncom.org/svn/trex/T-REx%202.2.0.tar | 90.0KB
Mirror Julian-Stier.de:
julian-stier.de/T-REx%202.2.0.zip | 22.9KB
julian-stier.de/T-REx%202.2.0.ace | 19.9KB
julian-stier.de/T-REx%202.2.0.tar | 90.0KB
Ein bischen Geschichte..
T-REx entstand, als ich in einem Projekt mit der TemplateEngine von phpBB konfrontiert wurde. Die Einfachheit dieser TemplateEngine war beeindruckend (zum Beispiel im Gegensatz zu smarty) und auch die Performance stand in Nichts nach. Jedoch war sie mir noch nicht flexibel genug und außerdem ist sie selbstverständlich geschützt. Daher entstand eine eigene TemplateEngine: T-REx 1.0. Aber schon bald war ich damit nicht zufrieden. Ich entdeckte viele Schwachstellen dieser phpBB-Methode. So entstand nach einigen Updates bereits eine beinahe grundsätzliche Umgestaltung der Funktionsweise und es entstand T-REx 2.0, deren besondere Eigenschaft es war, erst bei Aufruf der entsprechenden Methode zu kompilieren. Außerdem war es möglich Blöcke ineinander zu verschachteln. Nach und nach kamen wieder kleine Updates und schließlich kam, nach 2.1.2 der Wunsch die gesamte TemplateEngine nochmals neu (auf php5-Basis) und mit weit mehr Methoden zu schreiben. Das Ergebnis ist heute fertig geworden.
Was ist T-REx, was ist eine TemplateEngine?
Eine TemplateEngine dient dazu Dateien (Templates) zu verwalten und grundsätzlich nach Platzhaltern zu durchsuchen. TemplateEngines haben dabei sehr unterschiedliche Eigenschaften und verwalten grundsätzlich HTML-Dateien (bzw. Text).
T-REx ist eine TemplateEngine, die zur Laufzeit "kompiliert". Sie kann dabei Platzhalter ("Variablen") und Textabschnitte ("Blöcke") ersetzen, mehrere Templates zusammenführen, Templates ineinander schachteln und einiges mehr. Im Gegensatz zu anderen TemplateEngines arbeitet T-REx ohne Cache, d.h. bei jedem Aufruf wird alles neu generiert (wie php auch selber stets von Neuem geparsed wird). Jedoch zeichnet sich die TemplateEngine dadurch aus, dass sie sehr kompakt gehalten ist und nur das Nötigste vornimmt. So folgt T-REx zwei Arbeitsschritten: Konfiguration, Kompilierung. Dadurch ist es möglich bereits während der Konfiguration abzubrechen (z.B. durch eine Weiterleitung, eine Bildausgabe), ohne dass eine Textausgabe vorgenommen wurde und ohne große Performanceverluste. Erst wenn ein Befehl zur Kompilierung kommt durchsucht die TemplateEngine die einzelnen Dateien und kompiliert alles.
Was bringt T-REx besonderes mit sich?
T-REx kann wie jede andere TemplateEngine auch Platzhalter verwenden. Im Gegensatz zu vielen anderen wird aber darauf geachtet zwischen Design und Code zu unterscheiden. Das Template hat nicht zu entscheiden, welcher Inhalt an einen Platzhalter kommen soll. Der Inhalt bildet ein drittes Medium (ausgelagerte Dateien, Datenbank, ..), der durch den Controller (Code) angesprochen wird. Nur der Code entscheidet, was mit einem Platzhalter geschieht. Viele TemplateEngines haben sogenannte Schleifen in ihren Templates, die es ermöglichen einen bestimmten Text oder ein bestimmtes Muster immer wieder zu wiederholen. Oft ist es aber so, dass dabei im Template festgelegt wird, wie oft oder auf welche Weise genau das geschehen soll. T-REx hat die möglichkeit Textabschnitte beliebig oft zu durchgehen, beliebige Platzhalter darin zu ersetzen und auch Textabschnitte innerhalb von Elternelementen zu durchgehen.
Mit der neuen Version ermöglicht es T-REx außerdem eine eigene Fehlerbehandlungsfunktion oder eine eigene Kompilierungsfunktion (!) zu definieren. Somit kann man nicht nur HTML damit verarbeiten (oder wahlweise auch XML, ..), sondern auch mit geeigneten Schnittstellen PDF oder ähnliches.
Sonstiges
T-REx steht unter der GPL 3 und darf demnach von jedem erweitert, verändert und verbreitet werden, solange die Lizenz gleich und mein Name erhalten bleibt. Eine Dokumentation befindet sich noch im Aufbau und auch die Funktionsreferenz wird natürlich noch vervollständigt. Für Fragen steht meine eMail zu Verfügung: trex[at]julian-stier.de
Kritik ist erwünscht, eine Diskussion, ob nun diese oder jene TemplateEngine besser ist nur unter der Vorraussetzung, dass jedem Teilnehmer der Diskussion bewusst ist, dass viele TemplateEngines ein anderes Konzept (das stets Vor- und Nachteile hat) verwenden und man diese Konzepte an sich, die TemplateEngines aber weniger vergleichen kann.
lG
php0Kid
Julian Stier
Es ist soweit! T-REx 2.2.0 released.
Nach einem Monat ist nun endlich die neue Version fertig.
Track: syncom.org/svn/trex/
Dokumentation: julian-stier.de/referenz.htm
Download:
Mirror Syncom:
syncom.org/svn/trex/T-REx%202.2.0.zip | 22.9KB
syncom.org/svn/trex/T-REx%202.2.0.ace | 19.9KB
syncom.org/svn/trex/T-REx%202.2.0.tar | 90.0KB
Mirror Julian-Stier.de:
julian-stier.de/T-REx%202.2.0.zip | 22.9KB
julian-stier.de/T-REx%202.2.0.ace | 19.9KB
julian-stier.de/T-REx%202.2.0.tar | 90.0KB
Ein bischen Geschichte..
T-REx entstand, als ich in einem Projekt mit der TemplateEngine von phpBB konfrontiert wurde. Die Einfachheit dieser TemplateEngine war beeindruckend (zum Beispiel im Gegensatz zu smarty) und auch die Performance stand in Nichts nach. Jedoch war sie mir noch nicht flexibel genug und außerdem ist sie selbstverständlich geschützt. Daher entstand eine eigene TemplateEngine: T-REx 1.0. Aber schon bald war ich damit nicht zufrieden. Ich entdeckte viele Schwachstellen dieser phpBB-Methode. So entstand nach einigen Updates bereits eine beinahe grundsätzliche Umgestaltung der Funktionsweise und es entstand T-REx 2.0, deren besondere Eigenschaft es war, erst bei Aufruf der entsprechenden Methode zu kompilieren. Außerdem war es möglich Blöcke ineinander zu verschachteln. Nach und nach kamen wieder kleine Updates und schließlich kam, nach 2.1.2 der Wunsch die gesamte TemplateEngine nochmals neu (auf php5-Basis) und mit weit mehr Methoden zu schreiben. Das Ergebnis ist heute fertig geworden.
Was ist T-REx, was ist eine TemplateEngine?
Eine TemplateEngine dient dazu Dateien (Templates) zu verwalten und grundsätzlich nach Platzhaltern zu durchsuchen. TemplateEngines haben dabei sehr unterschiedliche Eigenschaften und verwalten grundsätzlich HTML-Dateien (bzw. Text).
T-REx ist eine TemplateEngine, die zur Laufzeit "kompiliert". Sie kann dabei Platzhalter ("Variablen") und Textabschnitte ("Blöcke") ersetzen, mehrere Templates zusammenführen, Templates ineinander schachteln und einiges mehr. Im Gegensatz zu anderen TemplateEngines arbeitet T-REx ohne Cache, d.h. bei jedem Aufruf wird alles neu generiert (wie php auch selber stets von Neuem geparsed wird). Jedoch zeichnet sich die TemplateEngine dadurch aus, dass sie sehr kompakt gehalten ist und nur das Nötigste vornimmt. So folgt T-REx zwei Arbeitsschritten: Konfiguration, Kompilierung. Dadurch ist es möglich bereits während der Konfiguration abzubrechen (z.B. durch eine Weiterleitung, eine Bildausgabe), ohne dass eine Textausgabe vorgenommen wurde und ohne große Performanceverluste. Erst wenn ein Befehl zur Kompilierung kommt durchsucht die TemplateEngine die einzelnen Dateien und kompiliert alles.
Was bringt T-REx besonderes mit sich?
T-REx kann wie jede andere TemplateEngine auch Platzhalter verwenden. Im Gegensatz zu vielen anderen wird aber darauf geachtet zwischen Design und Code zu unterscheiden. Das Template hat nicht zu entscheiden, welcher Inhalt an einen Platzhalter kommen soll. Der Inhalt bildet ein drittes Medium (ausgelagerte Dateien, Datenbank, ..), der durch den Controller (Code) angesprochen wird. Nur der Code entscheidet, was mit einem Platzhalter geschieht. Viele TemplateEngines haben sogenannte Schleifen in ihren Templates, die es ermöglichen einen bestimmten Text oder ein bestimmtes Muster immer wieder zu wiederholen. Oft ist es aber so, dass dabei im Template festgelegt wird, wie oft oder auf welche Weise genau das geschehen soll. T-REx hat die möglichkeit Textabschnitte beliebig oft zu durchgehen, beliebige Platzhalter darin zu ersetzen und auch Textabschnitte innerhalb von Elternelementen zu durchgehen.
Mit der neuen Version ermöglicht es T-REx außerdem eine eigene Fehlerbehandlungsfunktion oder eine eigene Kompilierungsfunktion (!) zu definieren. Somit kann man nicht nur HTML damit verarbeiten (oder wahlweise auch XML, ..), sondern auch mit geeigneten Schnittstellen PDF oder ähnliches.
Sonstiges
T-REx steht unter der GPL 3 und darf demnach von jedem erweitert, verändert und verbreitet werden, solange die Lizenz gleich und mein Name erhalten bleibt. Eine Dokumentation befindet sich noch im Aufbau und auch die Funktionsreferenz wird natürlich noch vervollständigt. Für Fragen steht meine eMail zu Verfügung: trex[at]julian-stier.de
Kritik ist erwünscht, eine Diskussion, ob nun diese oder jene TemplateEngine besser ist nur unter der Vorraussetzung, dass jedem Teilnehmer der Diskussion bewusst ist, dass viele TemplateEngines ein anderes Konzept (das stets Vor- und Nachteile hat) verwenden und man diese Konzepte an sich, die TemplateEngines aber weniger vergleichen kann.
lG
php0Kid
Julian Stier
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von PHP0Kid ()