Templatesystem ja/nein
Naps
- php
0 1UnitedPower0 molily
0 Naps0 bubble0 Sven Rautenberg0 molily
0 Tom0 Naps
Hi,
macht so ein Templatesystem für kleinere Projekte einen Sinn?
tut.php-quake.net/de/template.html
Oder spricht alles dagegen?
MfG Naps
Meine Herren!
macht so ein Templatesystem für kleinere Projekte einen Sinn?
tut.php-quake.net/de/template.htmlOder spricht alles dagegen?
Und wenn doch, wieso nicht?
Will sagen: das ist keine konstruktive Fragestellung. Was soll man darauf antworten? Die allgemein bekannten Vor- und Nachteile von Template-Engines, ihre Alternativen und ihre spezifischen Besonderheiten erläutert man nicht mal eben in einer Foren-Antwort. Die Lektüre dazu ist fast unendlich. Konkretisiere die Frage und wir können weiter reden.
Hallo.
Templatesystem? Ja.
Trennung von Eingabe, Verarbeitung und Ausgabe? Ja.
Model View Controller? Ja. Das Standard-Pattern für PHP-Webanwendungen.
Eigenes Templatesystem? Nein.
So wie in dem Artikel beschrieben? Sicher nicht. Das ist nicht nur Templating, sondern auch Routing. Das lösen dutzende MVC-Frameworks besser. Das wirkliche Templating wird gar nicht verbessert, es wird weiter schlecht lesbarer PHP-Code mit manuellem Escaping empfohlen. Verwende eine Templating-Engine, die lesbaren und sicheren HTML-Code produziert. Am besten eine, die die Syntax von HTML versteht und gar keinen kaputten Code ausspucken kann. Ich bin ja ein Freund von Haml und Jade, aber in der PHP-Welt sind m.W. eher Smarty und Twig verbreitet.
Mathias
Templatesystem? Ja.
Trennung von Eingabe, Verarbeitung und Ausgabe? Ja.
Model View Controller? Ja. Das Standard-Pattern für PHP-Webanwendungen.
Eigenes Templatesystem? Nein.
So wie in dem Artikel beschrieben? Sicher nicht. Das ist nicht nur Templating, sondern auch Routing. Das lösen dutzende MVC-Frameworks besser. Das wirkliche Templating wird gar nicht verbessert, es wird weiter schlecht lesbarer PHP-Code mit manuellem Escaping empfohlen. Verwende eine Templating-Engine, die lesbaren und sicheren HTML-Code produziert. Am besten eine, die die Syntax von HTML versteht und gar keinen kaputten Code ausspucken kann. Ich bin ja ein Freund von Haml und Jade, aber in der PHP-Welt sind m.W. eher Smarty und Twig verbreitet.
Ich konnte mich aber nie mit so etwas anfreunden:
{% for user in users %}
* {{ user.name }}
{% else %}
No users have been found.
{% endfor %}
Mit "normalem PHP" kann man das genauso lösen ohne eine "eigene sprache" zu lernen.
Was ist an dem o.g. Beispiel besser als eine normale foreach Schleife?
MfG Naps
{% for user in users %}
* {{ user.name }}
{% else %}
No users have been found.
{% endfor %}
> Mit "normalem PHP" kann man das genauso lösen ohne eine "eigene sprache" zu lernen.
> Was ist an dem o.g. Beispiel besser als eine normale foreach Schleife?
Es kann ein Vorteil sein, dass man reduzierte Funktionalitäten hat. Die Template-Engine kann nur mit den Daten arbeiten die es bekommt, mit PHP hingegen, kannst du "alles" machen.
MfG
bubble
--
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
Moin!
Ich konnte mich aber nie mit so etwas anfreunden:
{% for user in users %}
* {{ user.name }}
{% else %}
No users have been found.
{% endfor %}
>
> Mit "normalem PHP" kann man das genauso lösen ohne eine "eigene sprache" zu lernen.
> Was ist an dem o.g. Beispiel besser als eine normale foreach Schleife?
Du bist vermutlich mit Fachwissen zu PHP ausgestattet.
Wenn in einem Projekt mehrere Leute zusammenarbeiten, und der eine macht den Code, der andere das HTML, dann will derjenige sich eventuell nicht mit PHP auseinandersetzen. Templatesysteme mit Platzhaltern hingegen sind mittlerweile sogar in browserseitigem Javascript verbreitet.
Und in ein Template kann man schwieriger Dinge einbauen, die da nicht reingehören.
Das mag für ein kleines Projekt mit nur einem Teilnehmer irrelevant sein. Bei Projektgröße "2 Personen" wird's langsam spannend.
- Sven Rautenberg
Hallo,
Mit "normalem PHP" kann man das genauso lösen ohne eine "eigene sprache" zu lernen.
Was ist an dem o.g. Beispiel besser als eine normale foreach Schleife?
Eine Templatesprache ist absichtlich nicht mit einer Programmiersprache ebenbürtig. Sie erbt einige Strukturen von vollwertigen Programmiersprachen, und dupliziert damit natürlich Funktionen (z.B. das Durchlaufen von Listen). Andere Funktionen werden mit Absicht ausgelassen. Dadurch kann erreicht werden, dass möglichst wenig Freiheit und damit möglichst wenig Logik in den Templates möglich ist.
Natürlich kann man das mit PHP lösen, das ist nicht der Punkt. Es mit PHP zu lösen bringt die Probleme mit, die Templatesprachen zu lösen versuchen. PHP kennt die Umgebung nicht, in der es Ausgaben macht. Auch wenn PHP-Scripte standardmäßig HTML generieren, so werden letztlich nur Strings aneinandergefügt. Da PHP den Kontext nicht kennt, kann es keinen automatischen Kontextwechsel vornehmen. PHP kennt zudem die Struktur der Eingaben und Ausgaben nicht; es handelt sich um Werte und Objekte unterschiedlicher Typen. Die meisten Templatesysteme haben ein sehr simples Typsystem: Einfache Werte/Skalare, Listen, Objekte/Hashes. Ihr Anwendungsbereich ist viel spezifischer.
Eine eigene Sprache benutzt man immer dann, wenn sie das Ausdrücken einer gewissen Logik vereinfacht. Es gibt viele derartige Sprachen in der Web- und Softwareentwicklung, und sie zu lernen ist in der Regel vorteilhafter, als eine ungeeignete Sprache zweckzuentfremden.
Mathias
Hello,
macht so ein Templatesystem für kleinere Projekte einen Sinn?
tut.php-quake.net/de/template.html
Der Link hat eine ganze Weile nicht geantwortet, daher erst jetzt meine Antwort :-)
Hättest Du aber sicherlich auch überlebt, wenn Du sie nicht erhalten hättest *g*
Das in quake-net gezeigte "Template-System" ist leider nur erster Denkansatz.
es berücksichtigt nicht die Trennung der Hoheitsrechte:
Stell Dir vor, dass Du ein Gästebuch (das ist immer wieder beliebt) erstellen willst, dass für 100te von Webseiten nutzbar ist. Die ganze Prozessarbeit findet auf deinem Host statt, die Gestaltung und das Design aber auf dem Host des Verwenders.
Folglich musst Du die "HTML-Templates" so aufbauen, dass sie überhaupt keinen Einfluss auf den Programmfluss haben. Mit CSS kann man die Darstellung dann noch beliebig "hübschen".
Du hast also eine "Maschine" im Hintergrund, deren Erscheinungsbild im Vordergrund durch den Webmaster (A) der anwwendenden Site gesteuert werden kann.
Nächster Schritt:
Über ein Interface kann (A) nun auswählen, welche Module er nutzen möchte, welche Funktionen darin in welcher (sinnvollen) Reihenfolge verwendet werden sollen und welche Darstellugsdateien dafür von seinem Host bezogen werden sollen. Die Maschine stanzt dann die jeweiligen Ergebnisse in die TEMPLATES ein, dort wo (A) die Platzhalter angeordnet hat und liefert das gesamte Ergebnis (natürlich verschlüsselt) an den Host von (A) zurück. Dieser veröffentlicht es dann unter seiner eigenen URi.
Dies nur als Szenario dafür, was _ich_ u. a. von einem Template-System erwarte.
PHP stellt für die Umsetzung dieser Forderungen eine mächtige Funktion zur Verfügung:
http://de2.php.net/manual/en/function.str-replace.php
Experimentiere mal ein wenig damit, dann wirst Du schon sehen, was die leisten kann - auch quasi-rekursiv!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Danke für die Anregungen!
MfG Naps