|
|||
PHP: Trennung von code und html
Ich hatte diesen thread iniziiert http://xhtmlforum.de/51630-oder-geht.html
Dort wird beiläufig die Trennung von html und code bei php erwähnt. Bisher kenne ich nur Wordpress und dort ist code und html ein grosses gigantisches unübersichtliches Mischmasch. Könnte mir bitte mal jemand ein Beispiel posten wie diese Trennung bei php aussehen könnte? Vielleicht gibt es irgendwo ein Beispiel im web oder sogar ein Blogsystem auf Basis von php wo dies getrennt wird. |
Sponsored Links |
Sponsored Links |
|
||||
Die meisten Template-Engines lagern das PHP komplett aus. Die Ausgaben werden dann mit Hilfe von Template-Variablen in das bestimmte HTML-Template eingefügt.
Die bekannteste PHP-Template-Engine ist wahrscheinlich Smarty. Hab hier mal vom Smarty Wiki ein einfaches Beispiel herausgenommen, wie die Trennung vorgenommen wird. Das unterscheidet sich im übrigen auch nicht großartig von anderen Template-Engines. Index.php PHP-Code:
Code:
<html> <head> <title>User Info</title> </head> <body> User Information:<p> Name: {$name}<br> Address: {$address}<br> </body> </html> Code:
<html> <head> <title>User Info</title> </head> <body> User Information:<p> Name: george smith<br> Address: 45th & Harris<br> </body> </html> Man kann auf der HTML-Seite mit Smarty allerdings noch viel mehr machen als in diesem Beispiel zu sehen sehen ist. Es können z. B. Arrays mit Hilfe von Schleifen ausgegeben werden oder sogar if-Abfragen durchgeführt werden ... Der eigentliche PHP-Code wird allerdings nie in einer .tpl Datei zu sehen sein. Ich arbeite jetzt schon längere Zeit mit dieser Template-Engine und wenn man sich erstmal an die Syntax gewöhnt hat, ist es sogar eine Arbeitserleichterung. Gerade bei größeren Projekten schafft man damit eine Ordnung und weiß wo man bei auftretenden Fehlern zu suchen hat. Vermischt man PHP und HTML und hat noch zusätzlich ausgelagerte PHP-Skripte, dann wird der Aufwand einen Fehler zu finden oder aber auch Änderungen vorzunehmen sehr hoch. |
|
||||
Para, das ist absolut keine Trennung von HTML und PHP.
Schau dir Template Systeme wie Smarty an. Oder das CMS Typo3. Letztlich funktioniert das meiste im sog. 3-Schichten-Modell: eine schicht die sich um die Beschaffung der Daten kümmert, eine schicht die sich um dsa Layout (den View) kümmert (auch xml, pdf etc) und eine schicht die alles kontrolliert und steuert (controller) --> MVC - Pattern Damit kann man das sehr gut machen. (@para jetzt nicht wieder die Diskussion ob prozetual oder OO) Sicher ist das nur ein weg von vielen. Um es nocheinmal abstrakt zu sagen: Es geht darum, das du ein HTML-Template hast in dem du, zb. Platzhalter definierst die von einem Parser ersetzt werden. Wichtig ist dabei: Bei komplexeren Views wirst du ohne PHP nicht mehr weiterkommen. Viel wichtiger als die Trennung von PHP und HTML ist die trennung von Buissnes logik und Ausgabe logik! Also ne foreach-schleife in einem template ist durchaus sinnvoll, sonst kannst du nie ein array in einem template durchlaufen lassen. Achja, dieses Thema was du hier anschneidest ist auch so ein Glaubenskrieg-thema! Jedem das seine. Ich bevorzuge das oben angesprochene MVC pattern (zur zeit wird das ganze noch bissle komplexer gemacht, Ich werde mein komplettes CMS als ein Objektbaum aufbauen....aber das ist wieder offtopic) Ich hoffe mein Beitrag hat dir geholfen! Gabriel Hemfrie war schneller....mist
__________________
Meine Spielwiese: http://blog.kanedo.net Ich bei Flickr? Da: Flickr: Fotostream von kanedo-projekt Für open Source Liebhaber: open Com Auch ich Zwitschere als @kanedo |
|
||||
Ich hab zu lange den MVC artikel bei wikipedia gesucht.
Sowas von verflixt aber auch...hatte gedacht ich habs diesmal als erster geschafft...aber du hast genau mein inhalt schon eher geposted....dammed Aber egal, so lange es hilft
__________________
Meine Spielwiese: http://blog.kanedo.net Ich bei Flickr? Da: Flickr: Fotostream von kanedo-projekt Für open Source Liebhaber: open Com Auch ich Zwitschere als @kanedo |
|
||||
Ich hab' mir ne eigene Template-Engine geschrieben, die ebenfalls in der Lage ist Schleifen und Bedingungen zu verarbeiten. Weiterhin habe ich die Möglichkeit Module aufzurufen.
Module sind bei mir Klassen, wie z.B. "Shop", da gibt es dann Methoden, um z.B. Kategorien oder Artiekl zu listen, etc. Ein Aufruf im Template sieht das z.B. so aus: Code:
<x_module module="Shop" action="listArticles" param="{|category|}, 10" returnvar="{|articles|}" /> <x_if condition="{#|articles|}"> <x_foreach array="{|articles|}" item="{|article|}"> {|article:name|}<br /> </x_foreach> <x_else /> Keine Artikel vorhanden! </x_if> Ist imho ziemlich übersichtlich, besonders, weil ich meine Template-Tags in meinem Editor extra hervorheben kann. Im Moment sind aber noch "dirty" Lösungen bei mir möglich, da ich fast überall in den Templates auch PHP-Code erlaube, was ich entfernen will, da man sonst schnell dazu neigt erstmal direkt PHP-Code ins Template zu schreiben, bevor man sich hinsetzt und die Template-Engine erweitert, wenn man etwas findet, was noch nicht unterstützt wird, so kann es dann ebenfalls schnell unschön werden. Variablen kann ich direkt in den Templates setzen, wodurch ich keine PHP-Datei brauche, die sich um das Template kümmert, z.B. habe ich auch Code:
<x_set_if condition="!{?|per_page|} || !{|per_page|}" var="{|per_page|}" value="10" /> So kann man oben in Templates erstmal alle Default-Variablen setzen und anschließend kann man davon ausgehen, dass diese entsprechend gesetzt sind. |
|
|||
Früher habe ich auch eigene Template-Engines oder Smarty verwendet. Aber mit zunehmender Komplexität der Applikationen macht dies keinen Sinn mehr und ich nutze nun direkt PHP.
Man gucke nur mal Mantizs Template Engine an ... da muss man sich zuerst derart reinfuchsen und Konventionen lernen, dass man gleich PHP nehmen könnte. |
Sponsored Links |
|
||||
Hi mantiz,
gefällt mir gut Dein Templatesystem. Es veranschaulicht, dass es nicht immer Smarty oder sonst ein System sein muss. Wichtig ist ja auch nur, die Logik die hinter solchen Templatesystemen steckt zu verstehen und zu nutzen. Hab Deine Beispiele mal in Smarty nachgebildet. So unterschiedlich sind die beiden Systeme gar nicht Code:
<x_module module="Shop" action="listArticles" param="{|category|}, 10" returnvar="{|articles|}" /> <x_if condition="{#|articles|}"> <x_foreach array="{|articles|}" item="{|article|}"> {|article:name|}<br /> </x_foreach> <x_else /> Keine Artikel vorhanden! </x_if> Code:
{my_object->meth_x p1="articles" p2="10" assign="output"} {if isset($output)} {foreach from=$output item=article} {$article}<br /> {/foreach} {else} Keine Artikel vorhanden! {/if} Code:
<x_set_if condition="!{?|per_page|} || !{|per_page|}" var="{|per_page|}" value="10" /> Code:
{if !isset($per_page)}{assign var=per_page value="10"}{/if} |
Sponsored Links |
Stichwörter |
mvc, php, php template, smarty, template engine, templates |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Redesign für Steiner Cycling Team | pkipper | Site- und Layoutcheck | 11 | 09.02.2011 13:25 |
Mit PHP html teilweise ersetzen | Nappi | Serveradministration und serverseitige Scripte | 6 | 15.06.2010 13:08 |
Safari "druckt" HTML code im browser | diver | (X)HTML | 3 | 31.12.2009 00:45 |
JQuery anfänger fragen ? wie man den code in php einbaut? | kjvision | Javascript & Ajax | 1 | 21.08.2008 18:02 |
Php Code und Html Code in Variable ausführen? | The Sayan | Serveradministration und serverseitige Scripte | 17 | 23.01.2007 02:00 |