Diskussion:Smarty/Archiv/1

Letzter Kommentar: vor 14 Jahren von Klaeren in Abschnitt Ausgabe

gecachte temporäre PHP Datei

Gemeint ist sicherlich eine Änderung am Template führt zum erneuten Erzeugen der temporären PHP Datei.


Ich habe gerade den Satz "Gerade bei Webapplikationen werden Datenbanken öfter abgefragt als geändert." (o.ä.) umgeschrieben, weil das eine allg. Wahrheit ist, die nicht nur auf Webapplikationen zutrifft. --Oimel 10:04, 9. Mai 2007 (CEST)

Abschnitt Kritik?

Ich halte einen Abschnitt "Kritik" für angebracht, da "Smarty" durchaus einige Nachteile mit sich bringt:

  • Erhöhte Komplexität durch Einführung einer (unnötigen?) eigenen Metasprache.
  • Keine echte Implementierung des MVC Design Patterns, dessen Effektivität kaum bestritten wird.
  • Trennung der Schichten "Logik" und "Präsentation" an einer Stelle, die nicht dem entspricht, was nach allg. Lehrmeinung sinnvoll wäre.
  • Im Sinne der Objektorientierung eher minderwertiger Ansatz durch die konsequente Nutzung ausschließlich primitiver Datentypen.
  • Relativ großer Overhead sowohl bei der Lernkurve als auch bei der Ausführung des Systems.

--Oimel 22:58, 4. Feb. 2007 (CET)

Ich hab so einen Abschnitt jetzt eingefügt.

Die wichtigste Kritik fehlt (das soll jetzt kein trollen gegen Smarty sein, sondern gilt für alle Template Engines für PHP):

  • Smarty ist überflüssig, da es ein Problem löst, das es so nur in anderen Programmiersprachen, aber nicht in PHP gibt. s.u.

Kritik am Artikel

  • Der Vergleich mit dem MVC-Konzept ist in diesem Artikel recht unsachlich dargestellt. Zuerst stellt sich die Frage, ob Smarty das Konzept selbst umsetzen muss, oder nur Teil des Konzeptes ist. Reduziert man SMARTY definitionsgemäß auf das was es ist, nämlich eine Art Hilfs-Framework zur "sauberen" Übergabe von Daten an die Darstellungsebene, so läßt sich Smarty durchaus mit dem MVC-Konzept in Einklang bringen. Davon abgesehen stellt sich die Frage, ob dieses Konzept bei einer Skriptsprache wie PHP, die sich an der Ausgabe textbasierten Codes über den Browser orientiert überhaupt sauber anwendbar ist. In diesem Fall wäre der Hinweis hier überflüssig, da er auf alle Web-Template-Systeme zuträfe. Davon abgesehen handelt es sich bei MVC nicht um ein starres Konzept sondern um eine "Philosophie". Allein die Anwendung von Templatesystemen wie SMARTY zeigt, daß hier von Programmierern versucht wird, dem Idealbild dieser Philosophie bewußt näherzurücken. Die Hinweise darauf, dass PHP selbst ein Templatesystem sei, halte ich für total überflüssig, da die Performancenachteile von Systemen wie SMARTY durch die Vorteile der Arbeitsteilung bei der praktischen Trennung zwischen Programmierung und Design bei weitem ausgeglichen werden.
  • Model View Controller (MVC) beschreibt nicht die Trennung von Logik/Code und Präsentation. Model, View und Controller enthalten allesamt Code. MVC beschreibt ein Modell zur Aufteilung von Anwendungslogik in verschiedene Bereiche um eine bessere Wiederverwendbarkeit zu erreichen. 1979 gab es noch keine Websites und deswegen sollte es einen nicht verwunden, dass Anwendungen, die nach dem MVC-Konzept entwickelt wurden in allen 3 Schichten aus Programmcode bestehen.
  • Template Engines trennen nicht Code und HTML sondern bringen diese auf einfache Weise zusammen. Das ist so nur für PHP-Programmierer nicht zu verstehen, weil es in PHP im Gegensatz zu nahezu allen anderen Programmiersprachen extrem einfach ist, Code und HTML zu mischen. Wer schon mal HTML-Code in z.B. Perl, Python, C usw. eingebettet hat (was ohne Template-Engine der einzige Weg ist, den dynamischen Teil in den HTML-Code zu bekommen), weiss, warum es hier Template-Engines gibt.
  • Weil sich Code und HTML in PHP einfach mischen lassen ist Smarty überflüssig, und man sollte als PHP-Entwickler die Finger von Smarty lassen, das spart mächtig erformance.
  • Wenn man nach MVC oder einem anderen Modell Präsentation und Logik trennen möchte (was sehr sinnvoll ist), dann muss man das einfach nur tun.
Da die Wikipedia ein Lexikon ist, sind Wertungen wie "überflüssig" natürlich im Artikel nicht angebracht, auch wenn ich derselben Meinung bin. Außerdem: Auch wenn es 1979 noch keine Websites gab, ist das MVC-Prinzip davon völlig unabhängig. Eine Unterscheidung zwischen "Code" und "Präsentation (ohne Code?)" ergibt im Kontext eines Programms ja sowieso keinen Sinn. --Oimel 22:08, 4. Mär. 2007 (CET)
  • Smarty is für mich auch nur eine Template-Engine. Das es MVC können muss fand ich beim durchlesen des Artikels gerade etwas irritierend. Ob man mit PHP anderen Code schön einbetten kann ist Geschmackssache und sei jetzt mal dahingestellt (für mich ist es das nicht). Auch sind für meinen Geschmack zu viele Forumulierungen wie "soll", "erscheint fraglich" oder "gegenüber anderen, anerkannten Lösungen nicht zu halten". Entweder es ist so und man belegt es oder man sagt nichts, aber das klingt mir in vielen Situationen zu wage und selbst als Smarty-Benutzer habe ich meistens keine Ahnung was jetzt genau schlecht oder nicht gut ist. Neben den vielen kleinen Nachteilen könnte man übrigens auch erwähnen, dass man durch {strip}{/strip} ohne Performance-Verluste (bis auf die einmalige Compilierung) die HTML-Ausgabe von unnötigen Leerzeichen bereinigen und gleichzeitig schönen Code schreiben kann (wie macht man sowas eigentlich ohne Template-Engine?;) ).

Kein Beispielcode

Ich vermisse etwas Beispielcode, um mir einen Eindruck zu machen. Wahrscheinlich aber ist das Ding einfach nicht so schick wie TAL/TALES/METAL-Familie -- gibt es inzwischen auch für PHP! -- und man schämt sich deswegen ;-) --Tobias 21:12, 10. Apr. 2007 (CEST)

Ebenfalls Kritik

Ich versteh total mal garnicht wie man etwas bewertet ohne es real benutzt zu haben. Weil wenn der Autor dieses Artikel wirklich smarty einsetzen wuerde, wuerde er wissen das NIEMAND ihn zwingt die daten vorher so aufzubereiten das sie smarty passen, dafuer gibt es plugins. Wie in jeder Template sprache.... man sollte halt texter keine informationen ueber code schreiben lassen ;) --Getty 12:19, 14. Jun. 2006 (CEST)

Wenn etwas schon im Grundsatz fehlgeht, dann kann man sich die restliche Überprüfung sparen. Der Abschnitt "Kritik" versucht, aus einer professionellen, eher wissenschaftlichen Sicht auf Smarty zu schauen. Mir scheint es eher so, Du hast nicht verstanden, was mit "aufbereiten" gemeint ist. Im übrigen ist der Abschnitt "Kritik" nicht von einem "Texter", sondern hauptsächlich von einem Diplom-Informatiker verfasst. --Oimel 10:09, 1. Nov. 2007 (CET)

Und nochmal Kritik

Wie oben schon erwähnt, scheinen hier die Begrifflichkeiten in der MVC-Diskussion ein wenig durcheinander geraten zu sein. Sicher, Smarty kann für schlimme Dinge misbraucht werden. Wer will, kann ja seine ganze Applikationslogik in {php}{/php} Tags auslagern. Das das möglich ist, sollte aber nicht Smarty angelastet werden, sondern dem entsprechenden Programmierer. Das einzige, was ein Template an Logik enthalten sollte, ist Anzeige-Logik. Und hierfür bietet Smarty nicht mehr und nicht weniger als angemessene Werkzeuge. Ich habe bereits mehrere MVC-Frameworks mit Smarty als Basis für die View-Komponenten gebaut und war bislang immer sehr zufrieden. (Noch ein Diplom-Informatiker)

wie jetzt?

Also ich weiß nicht so recht. Dass "MVC" etwas anderes ist, als das, was von Smarty angeboten wird, ist ja klar. Das war ja niemals die Fragestellung. Sondern vielmehr hat sich die Kritik im Artikel damit beschäftigt, dass von den Herstellern behauptet wurde, dass Smarty genau diese Trennung von Darstellung und Logik vornehmen würde, die man eigentlich mit einem MVC-Framework schaffen würde.

Nachdem man jetzt anscheinend selbst auf der Smarty-Website etwas vorsichtiger geworden ist mit den eigenen Behauptungen, könnte man sich jetzt vielleicht intensiver damit beschäftigen, wie sinnvoll es ist, in einer Sprache, die sowieso schon als "Template"-Sprache entworfen ist (PHP bietet nativ das mischen des Ausgabestream mit dem eigenen Quellcode an), eine eigene Sprachsyntax zu etablieren. Ums vorwegzunehmen: Mich überzeugt das nach wie vor nicht ;) --oimel 13:41, 30. Dez. 2008 (CET)

Verbesserungstips

Hallo Leute, ich finde einiges im Artikel noch unglücklich formuliert. Insbesondere die dauernde Nennung von XHTML ist störend. Nicht nur das wie bereits erwähnt XHTML gar nicht zwingend erzeugt werden muß (ich könnte auch Binärdaten mit Smarty ausgeben), XHTML ist nur ein etwas abgewandelter HTML Dialekt, der striktere Vorgaben hat als HTML. Das hat im Smarty Artikel aber nicht zu suchen. Ich empfehle daher XHTML erstens in HTML umzuwandeln und dann auch auf den HTMl Artikel zu verlinken - und/oder "XHTML-Seite" durch ein Synonym wie "Webseite" zu ersetzen. Auch das wäre allerdings noch nicht korrekt, da ich mit Smarty ja auch nur kleine Codeausschnitte generieren kann und diese in einem umliegenden MVC Framework einbetten kann. Die Formulierung "eine Art Compiler" ist ebenfalls unglücklich. Wieso nur eine Art? Smarty kompiliert den etwas kruden Code in natives PHP => ist das nicht ein Compiler? Zuletzt sollte unbedingt noch auf die neue Version eingegangen werden, die dann auch endlich z.B. normale Objektzugriffe erlaubt 194.95.62.19 (11:57, 22. Jan. 2010 (CET), Datum/Uhrzeit nachträglich eingefügt, siehe Hilfe:Signatur)

Ausgabe

Die Ausgabe von Smarty ist nicht nur auf HTML begrenzt! Mit Smarty lässt sich jedes textbasierte Dateiformat rendern, so z.B. auch XML-Dateien oder einfache Textdateien. Ich denke, der Text sollte dahingehend angepasst werden.

EDIT: Habe es nun selber hinzugefügt.

hat sich wohl erledigt, uralt und unsigniert --Herbert Klaeren 14:58, 16. Feb. 2010 (CET)