php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 08.08.2008, 03:30   #1 (permalink)
Benutzer
 
Registriert seit: 08.08.2008
Beiträge: 63
kerstel befindet sich auf einem aufstrebenden Ast
Standard Kontrollstrukturen in Template engine

Hallo,

ich bastell grad an einer Template Engine rum (nur für mich zum Spass an der Freude)

dort will ich nun ein paar Kontrollstrukturen einbringen, z.B.

[IF $Variable==1]
<table></table>
[ELSE]
<tr></tr>
[/IF]

[FOREACH $Variable_Array AS $Var]
<tr>
<td>[$Var]</td>
</tr>
[/FOREACH]

Das ganze sollte auch verschachtelt gehen.

Jeman ne Idee wie man das machen könnte, hab mal n bissl mit regulären ausdrücken rumgespielt, hat aber nicht so geklappt

Danke und Gruß
Kerstel
kerstel ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.08.2008, 04:03   #2 (permalink)
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 25.134
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
Jeman ne Idee wie man das machen könnte
Ja, und auch wenn Du das nicht hören magst, die allgemeingültige Nahezu-floskel schlechthin: Nicht das Rad neu erfinden und versuchen die 10tausendste "eigene" Templateengine programmieren, sondern eine existierende und wohldurchdachte Lösung benutzen. Es gibt genug (andere) Anwendungsgebiete, die eigenes Gehirnschmalz benötigen.
__________________
--
„Eins ist Fakt: Gescannt wird nackt!“

Privatsphäre 2.0 - Nacktscanner mit Eyetracking.
Unser Flugzeug darf kein geschlechtsfreier Raum sein.
--
nikosch ist offline   Mit Zitat antworten
Alt 08.08.2008, 08:24   #3 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo kerstel,

Kontrollstrukturen in Templates sind überflüssig, bzw. unsinnig. Templates dienen in der Regel dazu Code von Design zu trennen. Auf diesem Weg gelangst du sehr schnell in die Welt von MVC, das beschreibt, dass Kontrollstrukturen durch Aktionen im Controller mit den Informationen des Models abgewickelt werden sollten. Diese Vorgehensweise ist IHMO sauberer als Funktionalität in Templates zu legen.

Weiterer Nachteil der Kontrollstrukturen ist, dass der Entwickler dazu verleitet wird viele Funktionen "mal eben schnell" in das Template - das ja für einen konkreten Anwendungsfall oder gar eine konkrete Sprache erstellt wird - zu integrieren. Damit wird die Funktion, die vielleicht in einer anderen Sprache auch benötigt wird nicht abstrahierbar und man beginnt mit C&P-Engeneering.

Meiner Meinung nach solltest du besser eine Möglichkeit schaffen, einen Controller für dein Template definieren zu dürfen, der die Inhalte entsprechend seinen Model-Informationen manipulieren kann.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 08.08.2008, 10:05   #4 (permalink)
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von dr.e. Beitrag anzeigen
Meiner Meinung nach solltest du besser eine Möglichkeit schaffen, einen Controller für dein Template definieren zu dürfen, der die Inhalte entsprechend seinen Model-Informationen manipulieren kann.
Aber dann muss ich als Entwickler ins Design eingreifen. Oder der Designer entwickelt (php) Code.
Gibt es überhaupt ein produktiv nutzbares Template-System, das keine Kontrollstrukturen in seiner Template-eigenen Syntax hat? Ernst gemeinte Frage, da ich mich mit Template-Systemen nicht weiter beschäftige.
David ist offline   Mit Zitat antworten
Alt 08.08.2008, 11:04   #5 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo David,

Zitat:
Gibt es überhaupt ein produktiv nutzbares Template-System, das keine Kontrollstrukturen in seiner Template-eigenen Syntax hat? Ernst gemeinte Frage, da ich mich mit Template-Systemen nicht weiter beschäftige.
Ich denke nicht, jedoch sind Kontrollstrukturen weiterhin ein Killer für Generik und Wiederverwendbarkeit.

Mit nur einem Templatesystem ist einem aber nicht wirklich geholfen. Nicht sauber eingesetzt bietet es genau die Nachteile, die du genannt hast. Gibt man dem Template-Bauer jedoch die Möglichkeiten, auf einen Satz von Komponenten zugreifen zu können, die im Template "verbaut" werden können, so sieht die Sache wieder anders aus. Sollte eine Komponente dann auch noch per Template konfigurierbar sein (z.B. Sprachumschaltung eines CMS), ist es für den Template-Bauer ohne weiteres möglich eine Design-Aufgabe komplett alleine umzusetzen. Dazu muss das Templatesystem jedoch die Möglichkeit beinhalten diverse konfigurierbare Komponenten einbinden zu können.

Letzters unterstützen jedoch mir bekannte Templatesysteme (ich klammere Templating, das in diversen MVC-Frameworks integriert ist hierbei aus) jedoch nicht und damit ist der Einsatz eines Templatesystems eines Templatesystems wegen Unsinn.

Aber lassen wir mal kerstel zu Wort kommen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 08.08.2008, 11:10   #6 (permalink)
Benutzer
 
Registriert seit: 08.08.2008
Beiträge: 63
kerstel befindet sich auf einem aufstrebenden Ast
Standard

@nikosch

Mag ich schon hören, trotzdem macht es Spass Ich muss es ja nicht vertreiben usw. sondern es geht eher ums allgemeine verständnis

@dr.e.
Seh ich ein wenig anders. Es macht Durchaus Sinn das der Designer kontrollstrukturen hat um flexibel auf Variablenwerte reagieren zu können, z.B. ist das Zitieren im Board auch nix anderes, sowas kann der Entwickler nicht abfangen. Auch eine Foreach schleife macht durchaus sinn. Der Entwickler weiß ja nicht was mit den Variablen im Template passiert.

Ich hab bei Smarty in den Cached-Files gesehen, dass die Kontrollstrukturen einfach durch PHP Code ersetzt werden. Ich denke aber das bei einem Umfangreichen Template es stark an die Performance geht wenn der Compiler ständig angesprungen wird. Oder irre ich mich da, da ich bei Smarty eigentlich noch nie Performance Probleme hatte.

Viele Grüße
Kerstel
kerstel ist offline   Mit Zitat antworten
Alt 08.08.2008, 11:41   #7 (permalink)
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von kerstel Beitrag anzeigen
Ich hab bei Smarty in den Cached-Files gesehen, dass die Kontrollstrukturen einfach durch PHP Code ersetzt werden. Ich denke aber das bei einem Umfangreichen Template es stark an die Performance geht wenn der Compiler ständig angesprungen wird. Oder irre ich mich da, da ich bei Smarty eigentlich noch nie Performance Probleme hatte.
Einen Parser brauchst Du so oder so. Und PHP gestartet wird auch so oder so (wenn das Template System in PHP geschrieben wurde). Wenn Du erstmal den Parser hast, ist der Compiler template->php kein Problem. Und wie bei Smarty musst Du den Übersetzungprozess nur ausführen lassen, wenn sich das Template ändert.
David ist offline   Mit Zitat antworten
Alt 08.08.2008, 11:48   #8 (permalink)
Benutzer
 
Registriert seit: 08.08.2008
Beiträge: 63
kerstel befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von David Beitrag anzeigen
Einen Parser brauchst Du so oder so. Und PHP gestartet wird auch so oder so (wenn das Template System in PHP geschrieben wurde). Wenn Du erstmal den Parser hast, ist der Compiler template->php kein Problem. Und wie bei Smarty musst Du den Übersetzungprozess nur ausführen lassen, wenn sich das Template ändert.
schon richtig, aber trotzdem denke ich es ist ein unterschied ob ich den compiler einmal starte oder 360 mal in einem script, oder? Zudem ja das dann kein richtiger cache ist, da bei smarty die files ja trotzdem immer vom php compiler angefasst werden müssen. Wäre es da nicht sinnvoller das fertige html file zu cachen und das neu zu schreiben wenn sich was ändert?
kerstel ist offline   Mit Zitat antworten
Alt 08.08.2008, 11:50   #9 (permalink)
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Wenn Du so einen Fall "fast statischer Seiten" hast, ja. Hat aber nicht jeder.
Und es gibt auch Caches für PHP Code, apc zum Beispiel. Dann muss der Parser nicht jedes Mal laufen.
David ist offline   Mit Zitat antworten
Alt 08.08.2008, 12:04   #10 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Ich hab bei Smarty in den Cached-Files gesehen, dass die Kontrollstrukturen einfach durch PHP Code ersetzt werden. Ich denke aber das bei einem Umfangreichen Template es stark an die Performance geht wenn der Compiler ständig angesprungen wird. Oder irre ich mich da, da ich bei Smarty eigentlich noch nie Performance Probleme hatte.
Nein, Smarty "kompiliert" den Template-Code gerade deshalb in PHP-Code, da die Performance dadurch deutlich besser ist. Benchmarke mal Smarty mit deaktiviertem Cache gegen Smarty mit aktiviertem Cache und du wirst den deutlichen Unterschied sehen...
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
XmlHTTPRequests statt Template Engine! Performance? xueluf PHP-Fortgeschrittene 3 09.04.2008 11:35
Template Engine vs PHP-Includes aktionkuba PHP Tipps 2007 16 19.06.2007 23:53
Datenbankfelder direkt im Template verfügbar phpbeginner Datenbanken 3 29.07.2006 20:30
Eckige Klammern in Template nutshell PHP Tipps 2006 9 05.06.2006 19:12
template in template einfuegen tonne PHP Tipps 2005-2 8 10.11.2005 22:24
[Erledigt] Template Engine die PHP5+E_STRICT überleben PHP-Fortgeschrittene 0 17.08.2005 10:33
Template verständniss problem; referenz PHP Tipps 2005 17 19.05.2005 06:06
Template: Verschachteln von foreach PHP Tipps 2005 2 12.05.2005 15:37
Php Code als Variable definieren und in Template darstellen PHP Tipps 2004-2 4 31.12.2004 16:22
Template erstellen? PHP Tipps 2004-2 10 08.12.2004 09:41
suche ein bestimmtes template system PHP Tipps 2004-2 2 07.11.2004 19:49
[Erledigt] Template Parser PHP-Fortgeschrittene 9 06.10.2004 23:04
PHP BB Template Engine :: Blöcke??? PHP Tipps 2004 7 02.09.2004 21:01
Template Scripting PHP-Fortgeschrittene 2 04.06.2004 18:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
eigene template engine, kontrollstrukturen php, performantes template system, template engine php, cache template engine php

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum