smarty: mix von layout und code sinnvoll?

Josh

Legendäres Mitglied
ich erwäge, neu smarty als template-engine einzusetzen da es weit verbreitet ist und gut unterstützt wird von diversen apps.
doch nun sehe ich, wie mächtig smarty ist. allerdings finde ich es sehr fraglich, ob es sinnvoll ist, in templates eigene funktionen einbauen zu können etc, denn sinn von templates ist doch gerade die separation von design und code?!
was ist eure meinung dazu?

gruss
josh
 
Meine Faustregel bei template-engines ist, das Grafiker mit den templates arbeiten können müssen.
Wenn ich das bei Smarty richtig im Kopf habe kannst du das zwar machen, dann kannst du aber die vielen Sonderfeatures nicht nutzen. Wenn man die aber nicht benutzt braucht man dann noch Smarty?
Eine der Vorteile von Smarty ist aber sicher, das es gleich eine Möglichkeit gibt Inhalte zu cachen, wobei das mit einem getrennten scirpt für jede template-enginge möglich wäre. Allerdings ist smarty ohne einen PHP-Accelerator auch um einiges langsamer als andere template-engines (http://smarty.php.net/benchmarks/).

Ein weiterer Vorteil wenn im Template nur html-code ist, dass du auch ohne große Probleme auf eine andere Template-Engine wechseln kannst.
 
Spiele auch mit dem Gedanken, eines meiner PHP-Scripts mit einer Template-Engine zu "verschönern". Bin bei der Suche auch auf Smarty gestossen, habe allerdings schnell merken müssen, dass diese sehr umfangreich ist und bin mir nun nicht mehr ganz sicher, ob ich überhaupt so ein komplexes Produkt brauche.

Gibt es noch andere Engines, welche ihr empfehlen könnt?
 
@ hatschi:

danke, werde mir mal andere template engines anschauen, wenn smarty etwas langsam ist. bisher habe ich patTemplate verwendet, was auch ganz ok ist, aber man soll ja immer offen für neues sein.
smile.gif


zum benchmark: irgendwie blick ich da nicht ganz durch?! gelb ist ohne, grün mit accelerator, richtig? und ist es nun besser, je länger der balken ist, oder umgekehrt?
blink.gif


@ webi:

dann schau dir mal

http://grdelin.phy.hr/~ivo/Nastava/Baze_po...plate1-php.html
http://grdelin.phy.hr/~ivo/Nastava/Baze_po...plate2-php.html

an.

gruss
josh
 
Die unterschiedlichen Tests (einfaches Template, Templates mit loops => z.B. Ergebnisliste bei einer Suche usw.) werden jeweils mit und ohne Accelerator durchgeführt.
Ohne sind sie Gelb, mit Accelerator grün.

Der Balken zeigt wie viele Requests pro Sekunde abgearbeitet werden konnten => je mehr desto besser.

Ohne Beschleuniger ist smarty langsamer weil smarty selbst einfach umfangreicher ist und daher länger zum parsen braucht. Mit Beschleuniger wird dieser Nachteil wesentlich geringer und kann, laut Benchmark, bei komplexeren Aufgaben (loops) sogar dazu führen das smarty insgesamt schneller ist.

@webi
Unter http://smarty.php.net/benchmarks/ findest du auch noch ein paar andere Systeme aufgelistet.
 
@ hatschi:

danke dir.
smile.gif
und wie finde ich heraus, ob bei meinem hoster so ein accelerator vorhanden ist? ist ein acc überhaupt gebräuchlich oder eher schnickschnack?
 
Also sicher bin ich mir nicht wie man das sieht, kann sein dass das bei phpinfo als installiertes Modul aufscheint, aber das ist definitiv kein Standardelement bei normalen hosting. Vielleicht wäre das sogar eine gute Geschäftsidee Idee das als hoster anzubieten, Server+installierter Zend Perfomance Suit für xx ¤ wäre vielleicht gar nicht mal so dumm.

Bei der Geschwindigkeit musst du dich halt fragen ob das für dich überhaupt relevant ist. Für viele Seiten spielt das ja nicht so sehr eine Rolle, und bei den Benchmarkergebnissen ist ja auch zu bedenken, dass die für einen selbst nicht so relevant sind weil z.B. sowieso x-mal mehr Zeit für Datenbankabfragen drauf geht oder weil man viel cachen kann und damit die Zeit locker reinholt.
 
jau, ich erstelle eben scripts, welche ich übers internet verteile, deshalb spielt es schon eine kleine rolle, wie schnell das zeugs ist. aber du hast recht, an sich sollte ich mich nicht so darum kümmern und darauf schauen, dass ich sauberen code schreibe und keine dumpfbacken-schleifen.
smile.gif
 
Also ich habe mir selber wie Funktionen für meine Templates geschrieben. Wobei meine Templates einfach gehalten sind. Habe im prinzip nur HTML-Code und Platzhalter. Dazu folgende Funktionen:

load_tmp($template)
replace_tmp($platzhalter,$wert,$tmp_text)
replace_tmp_arr($array,$tmp_text)

$tmp_text ist jeweils der zurückgegebene Wert von load_tmp(), welcher in einer Variable gespeichert wurde.

$platzhalter ist klar. Dabei baut die Funktion allerdings noch Code um das "Wort". Also meine Platzhalter sehen so aus: {[name]}

replace_tmp("name","proggi","Mein Nick ist {[name]}");

so würde die Funktion dann aussehen. $tmp_text kann auch eine Variable sein.

Und bei Array ist es das selbe nur halt, dass dort die ganzen Platzhalter und Werte in einer Schleife abgearbeitet werden. Beispiel:

replace_tmp_arr(array("name"=>"proggi","geburtstag"=>"31.01.1990"),"Mein Nick ist {[name] und ich bin am {[geburtstag]} geboren.");

Wer also die paar simplen Funktionen mal haben will sagt einfach bescheid.

Mfg proggi
 
@ proggie:
hast du denn schon mal ein anderes system angeschaut? vielleicht gäb dir das auch input, was du noch für funktionen adden könntest.
smile.gif
 
Wenn du wieder ein wenig mehr Performance rausholen willst kannst du ja auch die whitespace aus dem template entfernen. Das template ist dann kleiner, braucht weniger Ressourcen, und logischerweise auch der Output kleiner
biggrin.gif


Ein Nachteil ist vielleicht, dass der output nicht leicht auszuwerten ist wenn man ein Problem hat, aber wenn man sich ein backup mit whitespaces aufhebt ist das eigentlich auch kein Problem.
 
@Josh: Habe mal das System vom WBB2 abgekupfert gehabt und für Testzwecke genutzt. Die Methode mit dem eval() gefällt mir alleridngs nicht so. Ansonsten habe ich noch keine weiteren Systeme betrachtet, jedoch imemr mal selber was geschrieben. Meistens halt als Klasse.

@hatschi: Erstaml Gesundheit.
smile.gif
Die Idee ist gut. Werde ich sicher noch umsetzen.
 
Zurück
Oben