hotti: PHP htmlspecialchars in Template oder Program

hi,

s. Thema. Sofern die Template-Engine (TE) PHP heißt, ist das Erste ja verlockend. Aber wehe, die TE wird mal ausgetauscht ;)

Egal, was bevorzugt Ihr? Stilmäßig?

Hotti

  1. Tach!

    s. Thema. Sofern die Template-Engine (TE) PHP heißt, ist das Erste ja verlockend. Aber wehe, die TE wird mal ausgetauscht ;)
    Egal, was bevorzugt Ihr? Stilmäßig?

    Ich bevorzuge Problembeschreibungen, die nicht mit "s. Thema" anfangen. Ansonsten sind Maskierungen Sache der Ausgabelogik. Wenn dazu ein Template-System herangezogen wird, sollte das Maskieren so durchgeführt werden, wie es in diesem vorgesehen ist. Der Datenvorbeiter sitzt an einer anderen Stelle und hat üblicherweise keine Ahnung, an welcher Stelle im Template welche Daten zu stehen kommen und wie diese dann zu behandeln sind. Ich kann da auch kein "wehe" erkennen, denn man muss sowieso mehr oder weniger großartig umbauen, wenn man das Template-System und damit die Syntax ändert.

    dedlfix.

  2. s. Thema. Sofern die Template-Engine (TE) PHP heißt, ist das Erste ja verlockend. Aber wehe, die TE wird mal ausgetauscht ;)

    Egal, was bevorzugt Ihr? Stilmäßig?

    Ganz einfach. Die von mir bevorzugten "SETE" ("Super Einfache Template Engine") läuft darauf hinaus, dass im Teplate nur etwas steht wie:

    §§§string§§§

    Damit kann der Front-End-Entwickler dort auch etwas eintragen wie:

    Was jetzt $arTPL['string'] liefert kann "sonstwas" sein, also insbesondere auch HTML, sogar Javascript. Für Sicherheit hat der Programmierer zu sorgen, der ggf. fremde Inhalte dem Context-Wechsel entsprechend behandelt, wenn er Key-Wert-Paare in $arTPL schreibt.

    Selbst wenn etwas wie §§§string@@@wert1@@@wert2@@@wertN§§§ jetzt zu einem Funktionsaufruf führen würde, dann würde ich dazu neigen, für diese Funktionen eine Art "Namensraum" zu bauen, damit der Progger schon an Hand des Funktionsnamens weiß, dass er auch hier auf den Context-Wechsel zu achten hat. Also würde nicht nach einer Funktion "Name" gesucht, sondern nach "TplFunction_Name", dito auch bei einem Autoloader.

    Grund: der Frontend-Entwickler ("Designer") kann die Problematik nicht übersehen.

    Jörg Reinholz

    1. hi Jörg,

      Grund: der Frontend-Entwickler ("Designer") kann die Problematik nicht übersehen.

      Das ist der KnaxPointt!!!

      So nun: Die Funktion gehört ins Programm ;)

      Viele Grüße,
      Horst Rolf

      --
      Namen sind Schall und Rauch.
      1. Hi,

        Grund: der Frontend-Entwickler ("Designer") kann die Problematik nicht übersehen.

        Das ist der KnaxPointt!!!

        So nun: Die Funktion gehört ins Programm ;)

        Das wichtigste Argument hat dedlfix bereits genannt: der Entwickler des Controllers (wenn man von MVC ausgeht) weiß gar nicht, was für einen Kontext das Template braucht: ist es JavaScript-Kontext, HTML-Kontext, …

        Die Funktion gehört daher ins Template. Die meisten mir bekannten Templates machen dies automatisch im Hintergrund, in dem sie standardmäßig nach HTML-escapen, aber bei Bedarf auch die Möglichkeit vorsehen, anders escapen zu können.

        Bis die Tage,
        Matti