Webstatt.org - Community seit 2006 - 2012 (2024?)

Vorteile einer eigenen template-sprache

Avatar user-287
13.07.2007 12:49

Was sind die Vorteile einer eigenen Template-sprache?
z.B. Smarty hat ja eine eigene Syntax. Aber was sind die Vorteile davon? Es werden doch eigentlich nur unnötig Ressourcen verschwändet.
Es ist schon echt praktisch schleifen oder so in Templates zu verwenden, aber warum dafür eine eigne Syntax? Oder gibts da einen Sicherheitsaspekt, den ich momentan nicht erkenne?

Also was sind die Vorteile einer eignen Template-Sprache?

Avatar user-182
13.07.2007 12:57

also ich benutz' bei meinen projekten immer mein eigenes tplsystem.. vorteile sind ganz klaa: du weißt wirklich ganz genau wie alles funktioniert. das hat wiederrum den vorteil das du fehler schnell finden kannst und so zwinkern
bei smarty ists halt so, hab mir das auch mal angeguckt, dass du dich da richtig reinarbeiten musst. arbeitest du allerdings mit mehreren leuten an einem projekt, wirds wieder einfach, da vll. viele sich damit schon auskennen und so..

ist wie die frage: 'cms selbst proigrammieren oder ein fertiges nehmen?'..

Seid ihr auch schon wix'r? xD
Avatar user-287
13.07.2007 12:59

Ich will mir ja ein tpl System selbst schreiben. Nur ich steh momentan vor der Frage eine eigene Template Sprache zu implementieren, wie z.B. bei Smarty.
Oder mir die Arbeit zu sparen und statt dieser Template-Sprache einfach auch PHP in den Templates zu verwenden.
Dabei soll natürlich Design und Logischer Coder weiterhin getrennt werden.

user-203
13.07.2007 13:05

Warum sollte man in Templates, die man verwendet um HTML von PHP zu trennen, trotzdem PHP verwenden? Wäre inkonsequent.
Hab das bei meiner Template-Engine so gelöst, dass ich das ganze in HTML-Ähnlichen Tags versteckt habe:

<wts:if $array.index == '42'>Hallo <wts:$array.index3></if>
Ist einfach zu verstehen und gut anzuwenden.

Denkt dran, Kinder auf dem Rücksitz verursachen Unfälle, Unfälle auf dem Rücksitz verursachen Kinder.
Avatar user-287
13.07.2007 13:06

Original von user-203
Warum sollte man in Templates, die man verwendet um HTML von PHP zu trennen, trotzdem PHP verwenden? Wäre inkonsequent.
Hab das bei meiner Template-Engine so gelöst, dass ich das ganze in HTML-Ähnlichen Tags versteckt habe:

<wts:if $array.index == '42'>Hallo <wts:$array.index3></if>
Ist einfach zu verstehen und gut anzuwenden.


Es ist zwar inkonsequent, aber es würde die Arbeit stark vereinfachen.
Und ob man nun PHP oder HTML-Ähnliche Tags verwendet, warum verwendet man nciht gleich PHP?

user-203
13.07.2007 15:15

Naja. Ich persönlicher würde es für Anfänger als sicherer einstufen, wenn Sie sowas vor sich haben als PHP.
Abgesehen davon kann man so ganz klar die Möglichkeiten eingrenzen, die der Ersteller der Templates hat. Bzw. man schafft diese erst gar nicht. Ein ziemlicher Sicherheitsaspekt finde ich.
Außerdem kann jemand nicht versehentlich ein ganzes Skript schreddern, weil er irgendwo die falsche php-Zeile schreibt.

Wenn du deine Anwendung nur selbst verwenden willst ist das eine andere Sache, aber meist ist das ja nicht so.

Denkt dran, Kinder auf dem Rücksitz verursachen Unfälle, Unfälle auf dem Rücksitz verursachen Kinder.
Avatar user-287
14.07.2007 09:39

OK das überzeugt mich.
Ich will dann die Template-Tags per Reguläre Ausdrücke rausfiltern.
Doch wie geh ich am besten das Template durch? Zeile für Zeile? Block für Block? Oder einfach alles auf einmal?

user-303
14.07.2007 10:14

das wichtigste ist: cachen!
templates die jedes mal neu berechnet werden müssen sind nichts wert

Avatar user-287
14.07.2007 10:23

Original von user-303
das wichtigste ist: cachen!
templates die jedes mal neu berechnet werden müssen sind nichts wert


Das ist richtig. Ich glaube ich setz mich mal nachher ran und probier mal was hinzubekommen.

Avatar user-168
14.07.2007 11:33

Da ich derzeit auch darüber nachdenke mein Templatesystem neu zu gestalten: Gibt es zum Cachen nen Tutorial?

Weil nen funktionierendes Templatesystem bekomme ich hin, und Cachen ist mir auch klar. Aber so die Detailfragen sind mir noch verschlossen geblieben (im technischen Ablauf).

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-194
14.07.2007 12:15

Original von user-203
Warum sollte man in Templates, die man verwendet um HTML von PHP zu trennen, trotzdem PHP verwenden? Wäre inkonsequent.

Warum sollte man HTML von PHP trennen wollen? Das ist so ein weit verbreiteter Unsinn... Man trennt Applikationslogik von Ausgabelogik, nicht Sprache A von Sprache B. PHP wurde als Template-Sprache entwickelt und ist somit sehr gut für diesen Zweck geeignet. Es ist außerdem zwangsläufig die schnellste Möglichkeit das ganze zu lösen (alle Templatesysteme für PHP sind logischerweise in PHP geschrieben -- dh. Geschwindigkeit hängt von PHP selbst ab PLUS die Geschwindigkeit der Engine ansich).
Das einzige Pro-Argument betrifft wirklich die Einschränkung der Funktionen. Aber da sind dann die großen Template-Engines auch alle schon wieder draußen, weil man da wunderbarerweise PHP einbetten kann...

Avatar user-236
14.07.2007 12:22

hi user-287,

momentan setze ich mich "zufällig" intensiv mit diesem thema auseinander. ich sehe das ganze so:

Warum sollte man in Templates, die man verwendet um HTML von PHP zu trennen, trotzdem PHP verwenden? Wäre inkonsequent.


falsch, das ist definitiv nicht inkonsequent. das reicht schon, wenn du dir mal ein webframework wie symfony anschaust. dort ist genauso php in den templates positioniert. ursprünglich wurde php für genau diese aufgabe geschaffen, nämlich business logik in C code von präsentations logik zu trennen.
eigentlich haben template engines die aufgabe html und code dynamisch zu verbinden bei php ist das ganze ein bisschen anders, denn php ist ja schon eine in html eingebettet scriptsprache. entwickler von template engines denken jetzt, man müsse mit aller gewalt php von html trennen und führen dann eine eigene template sprache ein. damit wird der wartungsaufwand nicht unbedingt geringer.. kommt drauf an wie sauber bzw. unsauber programmiert wird. lächeln im grunde geht es aber um einen ganz anderen aspekt, nämlich um die aufteilung der anwendung in business logik und präsentations logik bzw. in MVC. anwendung dürfen oder sollen PHP in allen ebenen verwenden, nur der zweck für den die sprache eingesetzt wird, unterscheidet sich. bevor man sich an die entwicklung einer eigenen engine macht sollte man das erst mal verstanden haben.

jetzt zur frage, ob template engines php als template sprache verwenden sollten oder nicht:
die architektur einer anwendung sollte sich grundsätzlich am MVC prinzip orientieren. damit verbunden ist auch die unterteilung in business logik und präsentations logik. unter präsentations logik versteht man logik die zum aufbereiten der templates benötigt wird, also im grunde die verwendung einer template sprache. um den anforderungen gerecht zu werden, sollte nur dort präsentations logik im template eingesetzt werden, wo es sinn macht. (strukturen, schleifen und höchstens ein paar view helper) smarty macht jetzt nichts anderes als einen pseudo syntax einzuführen. damit habe ich zwar tolle möglichkeiten, aber natives php kann das ohnehin schon. (aktivier mal die short tags in der php.ini ... dann unterscheidet sich smarty äußerlich gar nicht so von php zwinkern )

hier noch ein paar punkte, die dich vielleicht überzeugen bzw. davon abhalten keine "tolle" template sprache zu erfinden:

1) du musst mindestens eine ausgeklügelte cache technik einbauen, damit der overhead aufgrund der template sprache kompensiert wird. ansonsten wirst du nicht glücklich. smarty ist schnell, aber das liegt an der kompilierung der templates, nicht nur am cashing. savant ist aber auch schnell.. ohne caching, wenn ich micht nicht täusche.

2) je nach projekt umfang tauchen fehler im template auf, egal ob php als template sprache oder sonst was. php lässt sich debuggen, deine template sprache nicht. höchstens du baust dafür auch noch einen speziellen debugger (viel spaß lächeln )

3) noch zum sicherheitsaspekt: mit einer eigenen template sprache tauchen genau so sicherheitslöcher auf, wie wenn du php verwendest. das hängt eindeutig vom programmierstil ab, also vom know how der template designer.

engines wie smarty konzentrieren sich zu stark auf das V in MVC. sowas wie einen controller gibt es dort nicht. ich will smarty damit nicht runter machen, es liegt letztendlich an den programmieren wie gut bzw. schlecht ihre anwendung wird.

viele grüße,
mab

P.S.:
http://bastian-frank.de/front_content.php?idart=47
http://de.wikipedia.org/wiki/Diskussion:Template_Engine

signature in progress
Avatar user-287
14.07.2007 12:58

WIe kann man eigentlich schnell prüfen ob eine Datei bereits gecached ist?
Bzw. wenn man als Cache html Dateien erstellt, wie kann man prüfen, ob die Dateien aktuell sind?

Avatar user-236
14.07.2007 13:17

kannst ja in der caching class eine gültige zeit einstellen und dann die letzte änderung mit filetime herausfinden und die differenz berechnen.

signature in progress
Avatar user-168
15.07.2007 16:04

Hat keiner nen brauchbaren Artikel zum Thema Template-Cache? Fettes Grinsen

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
user-203
15.07.2007 18:23

@mab: natürlich geht es vorrangig um die Trennung von Ausgabe und der dahintersteckenden Logik. Ich finde es nur sehr praktisch, wenn man dann einen Schritt weiter geht und dann jedem, der HTML kann und vielleicht auch weiß, wie eine Schleife( If-Else-for-while-foreach) funktioniert und schonmal von Variablen gehört hat auch ermöglichen kann selbst Templates zu erstellen ohne PHP zu verstehen oder sich damit auseinandersetzen zu müssen.
Wenn man dann noch nen Cache einbauen kann hat das meiner Meinung nach ne Menge vorteile das Gesamtkonzept.
Das jeder Code, der nicht zwingend nötig ist auch immer eine zusätzliche potenzielle Fehlerquelle ist, ist ja sowieso immer so. Das lässt sich kaum umgehen.

Denkt dran, Kinder auf dem Rücksitz verursachen Unfälle, Unfälle auf dem Rücksitz verursachen Kinder.
Avatar user-236
15.07.2007 19:02

klar, seh ich auch so. aber wenn man als template designer schon weiß was eine variable oder schleife ist, dann geht das auch einfach mit php.

das mit den short tags weiß auch nicht jeder:

variablen


<?php if ($result['mode']=='drin'zwinkern: ?>

Du bist eingeloggt

<?php endif; ?>


schleifen



<?php foreach ($block as $value): ?>

<p><?=$value?></p>

<?php endforeach; ?>



damit wollt ich nur sagen, dass man vorher erst mal überlegen soll, wie viel sinn eine eigene template sprache macht... darum gings eigentlich.
aber das ist letzendlich alles geschmackssache und man kann sich drüber streiten zwinkern

signature in progress
user-152
16.07.2007 05:17

Als Einsteigervariante:
http://www.developers-guide.net/forums/684,php-ein-eigenes-templatesystem-schreiben

Und zum Thema Cachen:

Cachen ist ja nichts anders als die Datei (das Ausgabeformat) auf dem Server speichern, und dieses dann auszugeben.
Hier muss dann die letzte Änderung der Dateien erfasst werden (File-Funktionen), damit geänderte PHP-Dateien und Templates aktuell ausgegeben werden.

Templates macht erst Sinn, wenn im PHP-Dateien kein HTML, und in HTML kein PHP-Kram vorhaben ist, wenn mehrere Leute an einen Projekt arbeiten, oder wenn mehrere Sprachen benutzt werden.

Irgendwelche Fetzen wie

<?php if ($result['mode']=='drin'zwinkern: ?>
Du bist eingeloggt
<?php endif; ?>

sind Blödsinn, und haben nichts mit Templates zu tun.
Templates sind Vorlagen, Schablonen wo Werte mittels PHP dann erstetzt bzw. ausgetauscht werden, siehe dazu Beispiellink oben ^^^

Avatar user-236
16.07.2007 07:20

wie gesagt, man kann sich drüber streiten lächeln


Templates sind Vorlagen, Schablonen wo Werte mittels PHP dann erstetzt bzw. ausgetauscht werden


klar, was spricht gegen $var->method();


Templates macht erst Sinn, wenn im PHP-Dateien kein HTML, und in HTML kein PHP-Kram vorhaben ist


mit diesem argument kannst du mich überhaupt nicht überzeugen. das halte ich nämlich für totalen schwachsinn. php lässt sich als template sprache wunderbar einsetzen, hat also überhaupt nichts mit der sprache zu tun!!!! das ist wohl das allgemeine missverständnis, das jedes mal bei einer solchen diskussion auftritt.

signature in progress
user-152
16.07.2007 09:14

Hmmm, überzeugen muss ich gar nichts, arbeite seit Jahren mit Templates und weis wovon ich rede lächeln

Wer einmal die Vorzüge von Templates erkannt hat, weis dass und wird dann nur noch mit Templates arbeiten.
Wenn man allerdings PHP-Code mit HTML-Kram in einen Topf haut und umrührt, brauch kein Template.
Dann kann man weiter sein HTML in die PHP-Dateien reinhacken und damit unnötige Zeit und Aufwand verschwenden.

Vielleicht müsste man mal etwas trennen.
Reden wir von "Freizeit 0-8-15 Templates" oder richten Templates ?

Avatar user-287
16.07.2007 09:27

Original von user-152
Reden wir von "Freizeit 0-8-15 Templates" oder richten Templates ?


Wie unterscheiden sich denn die beiden?

user-152
16.07.2007 09:35

Von Aufwand her dieses zu programmieren, Performace, Möglichkeiten und sauber programmiert (Klasse, Object etc..).
Die 0-8-15 Variante sind dann Geschichten mit unendlich vielen str_replace()-Pfeffer lächeln

user-220
16.07.2007 10:04

Dafür gibt es ja REGEX'e

Avatar user-236
16.07.2007 12:44

Wenn man allerdings PHP-Code mit HTML-Kram in einen Topf haut und umrührt, brauch kein Template.


autsch... wer spricht den von umrühren. warum sollte ich php nicht als template sprache nutzen. das wird doch in anderen programmiersprachen z.B. ruby bzw, mit eRuby genaus so gemacht. vielleicht hab ich mich nicht klar ausgedrückt: es kommt darauf an, wofür die sprache genutzt wird, es geht nicht darum irgendwas mit HTML in einer datei zu vermischen. :rolleyes:

arbeite seit Jahren mit Templates und weis wovon ich rede :


toll und jetzt? ich denk da bist du nicht der einzige in diesem forum. *rofl*

signature in progress
user-152
16.07.2007 13:25

ich denk da bist du nicht der einzige in diesem forum. *rofl*

Will damit nur zum Ausdruck bringen, dass mir Templatessysteme sehr vertraut sind, weil ich damit Tag für Tag arbeite, und teilweise das "rumgeier" darüber nicht verstehen kann.

user-203
16.07.2007 16:32

Naja. Aber es macht trotzdem genau 0.00 Meter Sinn, wenn man eine kleine Seite erstellt bei der man eine Templatesprache, Cache usw hat. Manchmal geht es auch schneller ohne den ganzen Schnickschnack. Das muss man denk ich auf jeden Fall abwägen.

Ein paar mal <?=$test?> und das Ganze in eine externe Datei gelagert gegen ein paar mal <var:test> und 200KB-Template-Klasse - das macht überhaupt keinen Sinn, auch wenn man natürlich viel mehr Möglichkeiten dadurch hat - oder auch nicht lächeln

Denkt dran, Kinder auf dem Rücksitz verursachen Unfälle, Unfälle auf dem Rücksitz verursachen Kinder.
user-152
16.07.2007 16:59

Da stimme ich voll und ganz zu.
Und wer dennoch damit arbeiten möchte, kann ja erstmal mit kleinen Brötchen anfangen (dazu der Link auf der 1.Seite von diesem Thread).

Praktisch sind Templates aber auch, wenn sich Content ständig ändert, oder dynamisch aus DB erzeugt wird, oder wenn die Seiten Mehrsprachig angelegt werden sollen.
Foren, Blogs, Bildgalerien sind schon ohne Templates nicht denkbar.

Und nicht zu vergessen das Thema Zeitaufwand und Pflege einer Website.
Hier sind Websites mit Templates (und vielleicht CMS) pflegeleichter als ein Gemisch von PHP-Dateien mit echo oder print Ausgaben.
Irgendwann ist das gejammer groß, wenn man die Seiten updaten oder verbessern möchte.

Aber ok, muss jeder selber wissen :rolleyes: