Code für eine 'saubere Seite'



  • Es ist ja allgemein bekannt, das es unte OOP'lern nicht gerne gesehen wird, wenn man HTML in PHP einbettet.
    Man soll ja Code von Content trennen, deshalb ein Template-System nutzen etc.

    Bisher hab ich HTML immer in PHP eingebettet, jetzt will ich aber mal andere Wege gehen, allerdings hab ich paar schwierigkeiten damit. 🙂

    Also, ein Template-System zu schreiben wäre ja allgemein kein Problem.
    Ich würde eine HTML-Datei mit paar Platzhaltern erstellen und diese dann mit paar Funktionen meiner Template-Klasse bearbeiten.
    Jetzt kommt aber das erste Problem: Dieses HTML-Template-File enthält nur mein grundsätzliches Design, wenn jetzt aber auf einer Unterseite z.b. ein Kontaktformular ist, weiß ich nicht mehr wie ich das Formular vom Code trennen soll. 😡
    Muss ich für das Formular ein eigenes Template erstellen und das dann mit einen Platzhalter, nennen wir in mal {content} ersetzen?
    Weil wenn ich das Formular in einer Variable speichern würde, wäre der Code ja wieder nicht sauber von HTML getrennt 😡

    Und wie würdet ihr ein größeres Projekt angehen?
    - Soll ich alles über eine index.php laufen lassen und per GET-Parameter die passende Unterseite inkludieren?
    - Soll ich alles über eine index.php laufen lassen und per GET-Parameter die passende Unterseite aus einer Datenbank holen?
    - Soll ich eine Verzeichnisstruktur erstellen und die einzelnen Unterseiten jeweils direkt verlinken, anstatt sie zu inkludieren?
    - Soll ich eine Verzeichnisstruktur erstellen und den Content der einzelnen Unterseiten aus der DB holen?

    Wenn ich mich für die Variante mit der DB entscheide, soll ich den HTML Code für z.B. das Formular ebenfalls darin speichern?



  • Konzept?! schrieb:

    Muss ich für das Formular ein eigenes Template erstellen und das dann mit einen Platzhalter, nennen wir in mal {content} ersetzen?

    ja, das mache ich immer so.



  • Konzept?! schrieb:

    Es ist ja allgemein bekannt, das es unte OOP'lern nicht gerne gesehen wird, wenn man HTML in PHP einbettet.
    Man soll ja Code von Content trennen, deshalb ein Template-System nutzen etc.

    nö. manchmal so, manchmal so.



  • PHP ist ansich ja im Prinzip schon eine Templatesprache. Allerdings sieht man das lange nicht mehr so, da die Entwicklungsarbeiten an der Sprache jede Menge Features, Funktionen und vorallem OOP-Kapabilität hervorgebracht haben. Das Vermischen von PHP-Code und HTML od. sonstigem wird von vielen od. manchen Entwicklern als schlechte Praxis angesehen. Und das meistens aus diesen Gründen:

    .) PHP-Code in Templates können die Sicherheit der Applikation bzw. des Servers gefährden. Es könnte sein, dass man einem Designer nicht ganz vertrauen kann, da dieser absichtlich oder unabsichtlich schadhaften oder illegalen Code in den Templates ausführen könnte.

    .) Der Designer könnte überfordert sein, die Syntax von PHP lernen zu müssen. Das mag vielleicht bei manchen Leuten stimmen, aber auch Smarty z.B. hat eine komplett eigene Syntax mit Funktionen und Kontrollstatements, die es gilt studiert zu werden. Meiner Meinung nach ist Smarty einfach nur eine Imitation von PHP, und von daher ist es völlig egal was der Designer schlussendlich lernen muss.

    .) Manche WYSIWYG-Editoren können mit den PHP-Tags nicht umgehen. Inwiefern das stimmt und wie relevant das ist sei mal dahingestellt...

    .) PHP-Templates können nur von Dateien aus ausgeführt werden. Templates, die in Datenbänken gespeichert sind, können nur mit 'eval' ausgeführt werden, was unter Umständen gefährlich werden kann.

    .) Das Django-Framework (geschrieben in Python) unterstützt erweiterbare Templates. Ein Template kann von einem anderen Template erben, und die darin definiterten "Blöcke" überschreiben, erweitern od. anderweitig manipulieren (funktioniert so ähnlich wie die Vererbung bei Klassen). Sowas mit PHP-Templates zu realisieren stelle ich mir ziemlich schwierig wenn nicht unmöglich vor, ohne von der Funktion 'eval' Gebrauch zu machen. Mir ist andererseits auch überhaupt keine alternative Template-Engine im PHP-Land bekannt, die sowas bewerkstelligen kann.

    Man muss abwägen was einem besser erscheint. Ob das nun Smarty & Co oder eine einfache PHP-Template-Implementation ist hängt stark von den Anforderungen ab. Aber eines ist klar: man sollte am Besten keine eigene Template-Sprache erfinden, da damit sehr sehr viel Programmierarbeit verbunden ist. Einfache Textersetzung ist ja keine große Herausforderung, aber die Probleme beginnen damit wenn man Kontroll-Strukturen und Funktionen implementieren will, ganz zu schweigen von kompilierten Templates. Smarty kann das alles schon, und vorallem das Kompilieren der Templates zu PHP-Code macht es ziemlich schnell.



  • Ja das was du ansprichst ist die MVC Struktur ( Model- View- Controler ). Wie du das letzendlich durchsetzt, ist deine Sache.

    Ich persönlich bevorzuge genau aus diesem Grund jsp anstatt php. Der Vorteil hierbei ist, das du etwa aus einem Formular oder einem Link direkt ein Servlet ( also eine ganz normale Klasse ) starten kannst, die durch die Anbindung an einen Datencontainer ( z.B. eine Datenbankklasse oder eine Bean ) sich die Daten holt und per RequestDispatcher an eine Seite weitergibt, die nur dazu da ist, um die empfangenen Daten darzustellen.

    Diese Architektur ist, so denke ich, an Sauberkeit nicht zu übertreffen. Die Idee dahinter ist, ist dass wenn du etwas an Daten oder Ansicht ändern willst, nicht den anderen Part kaputt machen kannst oder dich erst damit beschäftigen musst.

    Nur der Vollständigkeit halber 😃


Anmelden zum Antworten