dedlfix: \n in einem <<<END Block

Beitrag lesen

echo $begrüßung;

wenn Du schon Deine Scripte umstellst, warum gehst Du es dann halbherzig an? Gliedere doch gleich den gesamten HTML/CSS/JS-Kram in separate Dateien aus.

Das muss nicht immer günstig sein. Es gibt Lösungsansätze die trennen nicht einzelne Code-Arten voneinander sondern die Verarbeitungsschritte. Ein Ansatz ist das EVA-Prinzip (Eingabewerte sammeln, verarbeiten, Ausgabe erstellen), ein anderer ist das MVC-Pattern.

Wo früher vielleicht sowas zu finden war <p><?php echo $var; ?></p>, könntest Du dann in den Templates <p>&var;</p> notieren und mittels str_replace() (o. ä.) ersetzen lassen.

Anfänglich ist das eine Umstellung. Die Vorteile überwiegen dann doch im längerfristigen Arbeiten, wenn sich Programmlogik von getrennt wartbarem HTML-Templates (weiter-)entwickeln lässt.

Dafür ergeben sich ganz andere Probleme. &placeholder; zu ersetzen ist für einzelne Werte nicht schlecht. Doch man will auch mal Datenbankinhalte als Massendaten in der Ausgabe stehen haben. Und nun?

  • Eine Komponente schreiben, die für diesen Teil das HTML erzeugt, das statt an der &placeholder;-Stelle eingefügt wird? Damit ist man weniger flexibel, was den HTML-Code der Massendaten angeht, denn der versteckt sich im Code der Komponente.
  • Die Template-Syntax um ein Wiederhol-Element erweitern? Das bringt einen bedeutend höheren Aufwand mit sich, als ein str_replace(). Man muss zunächst den Block im Ganzen finden und darin die Platzhalter berücksichtigen. Vielleicht ist auch noch im konkreten Anwendungsfall eine Verschachtelung von Blöcken notwendig ...

Außerdem verlässt man mit einem zusätzlichen Template-System die PHP-Philosophie oder anders gesagt, man setzt auf die Template-Engine PHP noch ein Template-System oben drauf. Dazu muss man eine Menge Stringverarbeitung machen, der auszugebende String wird bei dessen Erstellung mehrfach umkopiert, jedes Mal mit mehr Daten darin, und ganz am Ende wird ein großer Batzen an den Webserver und den Client geliefert. Wenn der für die Ausgabeerstellung zuständige Programmteil seine bereits erledigten Teile gleich rausschickt, werden weniger Ressourcen benötigt und der Browser kann auch schon mit dem Rendern anfangen. Bettet man PHP-üblich die variablen Anteile der Ausgabe in <?php-?>-Blöcke und lässt die statischen Teile außerhalb liegen, können diese gleich zum Webserver durchgereicht werden, ohne PHP-Ressourcen zu belegen.

Die Übersicht leidet nicht (eher im Gegenteil), wenn man also zuerst nach dem EVA-Prinzip das Berechnen oder Besorgen der Daten erledigt und dann im HTML-Teil nur noch der für die Ausgabelogik benötigte Code steht. Dies optisch ansprechend und übersichtlich zu gestalten bleibt dann noch eine Frage des Coding Style.

echo "$verabschiedung $name";