Wie gebt ihr HTML aus?

ren1cer

Grünschnabel
Hallo erstmal,

ich beschäftige mich seit kurzer Zeit mit objektorientiertem PHP5 und habe mir bisher lediglich eine kleine Klasse für den Zugriff auf eine MySQL Datenbank gebastelt. Eine Frage, der ich mich allerdings stelle ist, wie ich denn wirklich organisiert und sauber HTML Code ausgeben lassen soll - denn eigentlich wollte ich von einer wilden echo-HTML-Orgie Abstand nehmen. Wie macht ihrs? Gibt es bereits sowas wie vorgefertigte HTML-Klassen? Auf der anderen Seite finde ich die Idee eines oo-Templatesystems wie Smarty ganz toll - allerdings schreckt mich die Funktionsvielfalt dessen etwas ab. Ein Bekannter meinte hingegen, er nutzt die DOM-Schnittstelle von PHP5 und lässt sich daraus HTML bauen (wenn ich es richtig verstanden habe)?

Wie geht ihr vor?

Gruß & Dank
 
ich benutze eigentlich immer echo zur ausgabe von html-code.
wenn du mehrzeiligen htmlcode ausgibts kannst du entweder
PHP:
echo '
html...
html...
html
';

oder
PHP:
echo <<<END1
html...
html...
html...
END1;  //END[int] muss aber unbedingt ganz vorn in der Zeile stehen!

hoffe ich konnte dir ein bisschen weiterhelfen...

lg Andi
 
Für alle eher kleinen Projekte, in denen ich keine Cache Engine nutzen muss, verwende ich eine minimale Templateengine.

Templates werden in HTML bereitgestellt und Platzahlter in PHP definiert.
PHP:
<!-- ganz viel HTML -->
<?php
  echo $template->get('templatename', 'varname');
?>
<!-- noch mehr HTML -->

Wobei mir die Template Klasse noch verschiedene Filter bzw. Validierungsoptionen bietet.
 
Ja. ;)
Alles andere war mir zu groß bzw. unförmig. Wobei es eben keine wirkliche Engine ist, da sie nichts parst oder ähnliches. Sie ist eher als eine Art Registry Klasse anzusehen und die Templates greifen darauf zu.
 
Ich habe mir auch eine kleine Templateengine gebaut. Ich vertrete jedoch die Auffassung, dass php und HTML Code nicht gemischt werden dürfen, wie Felix Jacobi in seinem Beispiel gebracht hat.

Meine Templateengine funktioniert deshalb etwas anders. Ich habe template Dateien, in dennen Platzhalter definiert sind. Für meine Projekte verwende ich Strings, die wie "<--foo-->" aussehen. Möchte ich ein Template aufrufen, so hole ich mir einfach den Text mit Werten:

Code:
$meinTemplate = $tpl->getTemplate(array('<--foo-->'),array('ich bin der Wert von foo'),'start.html');

Natürlich können in dem Array auch mehrere Werte stehen, die dann ersetzt werden.
 
Da ich in den kleinen Projekten alleine arbeite und von daher auch die Templates selbst erstelle bzw. überarbeite nachdem ich sie vom Grafiker bekomme, sehe ich da keine Probleme.
Es geht nicht darum PHP von HTML Code zu trennen, sondern Anzeigelogik von Programmlogik.
 
Outputbuffering (http://de2.php.net/ob_start) wäre auch noch eine Alternative, wenn man keine Lust auf ein Templatesystem hat.
Damit kann man seinen html Code in Templates auslaggern und bei Bedarf laden.
Ich sehe grundsätzlich auch kein Problem darin php in html zu verwenden, solange es sich nur um die Ausgabe von Daten handelt und nicht um Applikationslogik.
 
@Felix Jacobi

Solange du das für kleine Projekte machst, ist es vll. noch in Ordnung. Ich kenne viele große OS Projekte, die die Anzeigelogik über die tausende PHP Dateien des Projektes verteilen. Und da hat man es als externer wirklich schwer sich zurecht zu finden. Manchmal bleibt einem nichts anderes, als eine Volltextsuche nach einer Variable über alle Dateien im Projekt zu starten. Btw. Sehe ich es richtig, dass es bei deiner Variante fast keine Möglichkeit gibt, Teile des Templates auszulagern? (Außer die Template Dateien mit einzelnen Codestücken sequentiell zu landen)
 
Zurück