Was als Template Engine nutzen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Was als Template Engine nutzen?

    Hallo,
    zu aller erst: ich habe schon die Suche genutzt, einiges relativ passendes auch schon gefunden, aber hab noch immer so meine Bedenken.

    Also ich habe mir in Laufe der letzten Tage 2 Möglichkeiten für mein "Template Problem" rausgesucht.

    Darunter sind natürlich
    - eigenes Template-System
    - Smarty o.ä.
    - PHP verwenden
    - XSLT

    Allerdings habe ich bei einigen schon deutliche Nachteile gefunden.

    geh ich mal der reih nach um:
    - eigenes Templatesystem
    Macht natürlich zum einen viel Arbeit (so Grundsätzliches habe ich schon wie Variablen oder Schleifen, allerdings nicht verschachtelt.), zum anderen sollen ja Template-Systeme ziemlich an den Resourcen fressen.
    - Smarty
    Naja, noch nicht viel reingeguckt, scheint ja sehr mächtig zu sein, vll zu mächtig?
    - PHP verwenden
    Ja das wäre wohl meine liebste Methode. Da frage ich mich nur, wie es mit der Sicherheit aussieht. Eigentlich sollen ja nur, Funktionen die ich definiert habe, Ausgabe von Variablen, Schleifen und If-Abfragen ausgeführt werden.
    Gibt es eine Möglichkeit, für bestimmte Dateien andere Funktionen zu verbieten?
    Habe da bisher nur eine Whitelist Methode unter eval entdeckt, die für das Abspeichern der Templates reichen würde (verbotene Funktionen entdeckt = Template kann nicht gespeichert werden), aber da diese auch nur die Templates nach den bestimmten Strings durchsucht... (und ich glaube eval, selber war z.B. nicht mit drin^^)



    Die Kurzformen von PHP, die man im Internet findet, wie z.b. <?=$var ?>, diese können durch eine Konfigurations-Option abgeschaltet werden oder irre ich mich da?
    - XSLT
    Heute ausgetestet, war aber nichts. Nicht nur, das ich mit einigen Dingen Probleme hatte, ich fand es auch viel unübersichtlicher als bei den anderen Methoden.
    Habe auch gelesen, das es bei größeren Sachen langsamer wird.


    Ich habe noch ein wenig drüber nachgedacht und denke, PHP ist und bleibt mein Favorit.
    Wie ist eigentlich die Standartkonfiguration der meisten Server? Shorttags erlaubt oder nicht?
    Zuletzt geändert von mainclain; 03.07.2011, 02:08.

  • #2
    Seit PHP 5.4 ist <?= auch dann noch möglich, wenn short_open_tags disabled sind.

    XSLT ist imho die beste Wahl, wenn man Templates vorverarbeiten will, z.B. auf syntaktische Korrektheit prüfen, und wenn man aus den selben Templates verschiedene Ausgabeformate erzeugen möchte.

    Ansonsten ist PHP tatsächlich völlig ausreichend.

    Wenn du Sicherheitsbedenken hast, z.B. weil User Templates bearbeiten dürfen und dabei potenziell gefährlichen Code einbauen könnten, dann schau dir mal Twig an.

    Kommentar


    • #3
      Zitat von onemorenerd Beitrag anzeigen
      Wenn du Sicherheitsbedenken hast, z.B. weil User Templates bearbeiten dürfen und dabei potenziell gefährlichen Code einbauen könnten, dann schau dir mal Twig an.
      Einen 0815-User würde ich auf keinen Fall mit so einer Template-Engine arbeiten lassen, weil es einfach zu viel Verantwortung mit sich bringt. Einmal einen Wert nicht korrekt escaped, und schon sind XSS-Attacken möglich.

      Mal davon abgesehen halte ich von solchen Smarty-Like Template-Engines überhaupt nichts. Die sind weder Fisch noch Fleisch. Der Programmierer muss eine neue Sprache lernen und der Designer muss eine neue Sprache lernen. Wozu der Aufwand? Warum sich nicht auf eine Sprache einigen, die beide können? Bzw. im schlimmsten Fall muss nur eine Person eine neue Sprache lernen, aber nicht alle zwei.

      Und die wenigsten Editoren kommen mit so einer nicht standardisierten Syntax zurecht.
      Zuletzt geändert von h3ll; 03.07.2011, 13:23.

      Kommentar


      • #4
        Okay vielen Dank für eure Antworten.

        Zitat von onemorenerd Beitrag anzeigen
        Seit PHP 5.4 ist <?= auch dann noch möglich, wenn short_open_tags disabled sind.
        Naja man kann ja glücklich sein, wenn Leute 5.3 auf dem Server installiert haben

        Zitat von onemorenerd Beitrag anzeigen
        XSLT ist imho die beste Wahl, wenn man Templates vorverarbeiten will, z.B. auf syntaktische Korrektheit prüfen, und wenn man aus den selben Templates verschiedene Ausgabeformate erzeugen möchte.
        Ja ich fands auf jeden Fall recht kompliziert.
        Vorallem wenn es darum geht, dass der User eben nicht noch eine neue Sprache lernen muss. Und da ist XSLT ja sehr komplex.

        Zitat von onemorenerd Beitrag anzeigen
        Ansonsten ist PHP tatsächlich völlig ausreichend.

        Wenn du Sicherheitsbedenken hast, z.B. weil User Templates bearbeiten dürfen und dabei potenziell gefährlichen Code einbauen könnten, dann schau dir mal Twig an.
        Okay, von Twig hab ich schon gehört, werde es mir nochmal ansehen.
        Ich werde wahrscheinlich dennoch bei PHP bleiben (Aber gut erstmal gucken :P)


        Einen 0815-User würde ich auf keinen Fall mit so einer Template-Engine arbeiten lassen, weil es einfach zu viel Verantwortung mit sich bringt. Einmal einen Wert nicht korrekt escaped, und schon sind XSS-Attacken möglich.
        Ich weiß ja nicht, wie die 0815-User drauf sind, aber warum sollten die sich damit beschäftigen? Die meisten werden bei Veränderungen max. Copy/Paste von anderen Stellen durchführen. ^^
        Zuletzt geändert von mainclain; 03.07.2011, 15:25.

        Kommentar


        • #5
          Zitat von mainclain Beitrag anzeigen
          Ich weiß ja nicht, wie die 0815-User drauf sind, aber warum sollten die sich damit beschäftigen? Die meisten werden bei Veränderungen max. Copy/Paste von anderen Stellen durchführen. ^^
          Wenn du damit leben kann, dass Nicht-Programmierer die Webseite lahmlegen können, dann ist ja alles OK...

          Kommentar


          • #6
            Bin eigentlich auch ein Verfechter von reinem PHP-Code, da sich damit einfach alles machen lässt.

            Allerdings arbeite ich mittlerweile oft mit dem bereits erwähnten Twig (da es so wunderhübsch in Symfony2 integriert ist) und finde es eigentlich sehr angenehm.

            Im Grunde ist es ja nichts anderes als eine Abkürzung für PHP, da die ganzen Tags beim Cachen sowieso durch PHP ersetzt werden, d.h. im Endeffekt spart man sich damit nur beim Erstellen ein bisschen Zeit.

            Auswirkungen auf die Performance hat sowas tendenziell eher nicht, da die Templates ja nicht bei jedem Request neu geparsed, ersetzt und interpretiert werden, sondern beim ersten Aufruf gecached werden und danach immer die gecachte (PHP) Variante aufgerufen wird.

            Wenn du dein System immer weiter ausbaust, wirst du früher oder später soweit sein, dass du deine PHP-Templates auch mit einem Framework selbst verwaltest, und spätestens da kannst du genau so gut auch ein bereits bestehendes verwenden...
            This is what happens when an unstoppable force meets an immovable object.

            Kommentar


            • #7
              hallo mainclain

              da möchte ich dir doch mein easy Template mal vorstellen, weil es genau das bringt was du zu suchen scheinst.

              hier mal der Link:
              Easy Template 2.2 Script php-resource.de

              falls du fragen hast ich bin gern bereit zu antworten und zu helfen

              phpsven

              Kommentar

              Lädt...
              X