Pierre: Welche Template Engine für PHP ??

Hallo,

diese Frage wurde zwar schon des Öfteren gestellt, dennoch möchte ich gern wissen wie der aktuelle Stand bzgl. einer Template Engine für PHP derzeit steht. Smarty, Pear oder doch was ganz anderes? Mich würde auch interessieren in wieweit Firmen Template Engines gebrauchen und vorallem welche?

Grüße
Pierre

  1. Hallo

    ich habe mir schon viel darüber Gedanken gemacht und bin zum schluss gekommen das normale php-seiten am besten als Template geeignet sind.

    gruss

    1. Hi,

      ich habe mir schon viel darüber Gedanken gemacht und bin zum schluss gekommen das normale php-seiten am besten als Template geeignet sind.

      Bisher habe ich auch mir notdürftig ne eigene engine gebastelt. Aber irgendwie jugts mich in den Fingern Smarty zu testen, wie sind eure Erfahrungen?

      grüsse

      1. Ich grüsse den Cosmos,

        Bisher habe ich auch mir notdürftig ne eigene engine gebastelt. Aber irgendwie jugts mich in den Fingern Smarty zu testen, wie sind eure Erfahrungen?

        Zu gross und zu langsam. Nur für sehr grosse Projekte sinnvoll.

        Möge das "Self" mit euch sein

        --
        Ich bin keine Signatur, ich fülle nur diesen leeren Platz mit sinnlosen Worten
        1. Moin!

          Zu gross und zu langsam. Nur für sehr grosse Projekte sinnvoll.

          Aber auch recht einfach zu händeln. Wobei sich meine Experimente in Grenzen hielten: Ein gewisser Widerstand in Form eines nicht geringen Lernaufwandes ist da doch zu überwinden.

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          --
          Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
          1. Ich grüsse den Cosmos,

            Aber auch recht einfach zu händeln. Wobei sich meine Experimente in Grenzen hielten: Ein gewisser Widerstand in Form eines nicht geringen Lernaufwandes ist da doch zu überwinden.

            Smarty kann praktisch alles. Nur wenn man dieses System nicht ausnutzt, verschlechtert sich die Performance erheblich. Ich baue eine Adminseite mit ca. 50 Einträgen (mehrere select-boxen, Eingabefelder, Grafiken) über eine foreach-Schleife auf (im Template). Der Aufbau ist ca. 5mal langsamer, wie die Vorversion in "reinem" PHP. Smarty hat also nicht nur Vorteile, sondern je nach EInsatzzweck auch erhebliche Nachteile.

            Möge das "Self" mit euch sein

            --
            Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
            1. n'abend,

              [...] Smarty hat also nicht nur Vorteile, sondern je nach EInsatzzweck auch erhebliche Nachteile.

              Und weil du deinen Ferrari nur bis zum 2. Gang bekommst ist die Kiste gleich lahmarschig?

              Smarty hat den (erheblichen) Vorteil, dass es die Templates nicht bei jedem Aufruf neu "parsed", sondern die "statischen" Templates in PHP-Scripts verwandelt.

              Smarty hat weiterhin ein akzeptables Caching im Paket. Um die Performance seiner Anwendung zu steigern, bedarf es eines sinnvollen Cachings - für das Smarty aber nur die Funktionen zur Verfügung stellt - den logischen Weg darf sich jeder Programmierer selbst suchen.

              Smarty ist voluminös. ja.
              Smarty bietet mehr als man braucht. ja.
              Smarty ist überladen und lahm. nein, denn es wird tatsächlich nur das geladen, was man tatsächlich gerade braucht. Und nochmal: Smarty _kompiliert_ seine Templates beim ersten Aufruf - danach findet kein "parsen" der Templates mehr statt, denn wir haben bereits ausführbares (und teilweise optimiertes) PHP.

              Smarty ist ein Hilfsmittel, keine Wundertüte. Du musst es schon richtig anwenden um optimale Ergebnisse zu erzielen.

              ---

              Angelesenes Halbwissen ist doch immer wieder eine herrliche sache, nicht?

              ---

              da ich seit 1,5 Jahren nur noch Smarty einsetze, und von allem anderen ausprobierten nur enttäuscht bin, kann ich zu Alternativen leider keine (sinnvolle und brauchbare) Auskunft geben.

              weiterhin schönen abend...

              --
              wer braucht schon großbuchstaben?
              sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
              1. Ich grüsse den Cosmos,

                Und weil du deinen Ferrari nur bis zum 2. Gang bekommst ist die Kiste gleich lahmarschig?

                Und was ist mit Seiten, die sich bei jedem Aufruf ändern?
                Glaubst du nicht, das es einen Grund hat, wenn ich schreibe "sondern je nach EInsatzzweck auch erhebliche Nachteile"?

                Wenn ich mit einem Ferrari alle 2km stehen bleiben muss, weil die Lenkung zu langsam für die Geschwindigkeit ist, ist ein Ferrari für diesen Einsatzzweck ungeeignet. (War übrigends ein völlig bescheuerter Vergleich)

                Möge das "Self" mit euch sein

                --
                Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
  2. hallo,

    möchte ich gern wissen wie der aktuelle Stand bzgl. einer Template Engine für PHP derzeit steht. Smarty, Pear oder doch was ganz anderes?

    PEAR ist zumindest laut Handbuch keine Template Engine. Smarty allerdings benutzt eine eigene.

    Mich würde auch interessieren in wieweit Firmen Template Engines gebrauchen und vorallem welche?

    Es ist gar nicht so fürchterlich schwierig, sich ein eigenes Templatesystem zusammenzustellen. Auch dieses Forum nutzt eines, allerdings nicht auf PHP-Basis. Vermutlich läßt sich deine Frage, was Firmen einsetzen, nur dann beantworten, wenn du selber eben ein bißchen in "Firmen" recherchieren gehst.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
  3. echo $begrüßung;

    diese Frage wurde zwar schon des Öfteren gestellt, dennoch möchte ich gern wissen wie der aktuelle Stand bzgl. einer Template Engine für PHP derzeit steht. Smarty, Pear oder doch was ganz anderes?

    Es gibt verschiedene Ansätze für Template-Systeme. Analysiere bitte zuerst deinen Bedarf. Welche Teile der Ausgabe soll das Template-System übernehmen, welche Teile soll es nicht übernehmen. Gehören beispielsweise Teile wie Schleifen zur Ausgabe von Massendaten für dich zur Ausgabe- oder zur Programmlogik? Inwieweit denkst du kann eine Template-Engine etwas besser, was man nicht auch durch Disziplin mit reinem PHP erreichen kann?

    Mitunter kommt der Appetit auch erst beim Essen, weswegen es auch sinnvoll sein kann, sich die vorhandenen Implementationen in PEAR + Smarty anzusehen, um deren Features und Herangehensweisen kennenzulernen.

    echo "$verabschiedung $name";

  4. Hallo noch mal,

    vielleicht könnte man meine Fragestellung etwas abändern in, macht eine Template Engine wie z.B. Smarty überhaupt Sinn? Gehen wir mal von einem etwas größerem Projekt mit Datanbankanbindung aus. Was ich bisher so erfahren habe ist, dass man wunderbar Programlogik von Design trennen kann und aus Performancengründen ist es wohl sehr empfehlenswert. Was den ersten Punkt angeht, Code von Design trennen kann man doch auch bestens mit reinem PHP, also ergibt sich für mich nur einen Vorteil: Performance. Wie sieht ihr das?

    grüsse

    1. Ich grüsse den Cosmos,

      also ergibt sich für mich nur einen Vorteil: Performance. Wie sieht ihr das?

      Wie soll ein zusätzlicher Parser schneller sein, als reiner Programmcode? Technisch unmöglich, wer dir das eingeredet hat, hat keine AHnung.

      Möge das "Self" mit euch sein

      --
      Ich bin keine Signatur, ich fülle nur diesen leeren Platz mit sinnlosen Worten
      1. Moin!

        Wie soll ein zusätzlicher Parser schneller sein, als reiner Programmcode? Technisch unmöglich, wer dir das eingeredet hat, hat keine AHnung.

        Nun ja:

        Zitat: http://smarty.php.net/rightforme.php

        Here are some of the more notable features of Smarty:
        -----------------------------------------------------

        Caching: Smarty provides fine-grained caching features for caching all or parts of a rendered web page, or leaving parts uncached. Programmers can register template functions as cacheable or non-cachable, group cached pages into logical units for easier management, etc.

        Der Geschwindigkeitsgewinn liegt also darin, dass Smarty statt den Rechenprozess durchzuführen einfach eine statische, im Cache liegende Datei von der Platte holt und ausliefert, statt erneut zu rechnen. Dazu braucht es aber bei größeren Projekten auch das einen odere extra Megabyte an Plattenplatz auf dem Server und die Intelligenz des Programmierers, der das Caching gut einstellt.

        Bei einigen echt dynamischen Inhalten ist es dann so, wie Du es schreibst: Kein Gewinn. Da sollte man sich dann aber fragen, ob die Daten auch wirklich jedesmal aus der Datenbank/Berechnung geholt werden müssen oder ob man selbst ein intelligentes "caching" nicht schlanker und deswegen auch schneller hinbekommt.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
        1. Ich grüsse den Cosmos,

          Der Geschwindigkeitsgewinn liegt also darin, dass Smarty statt den Rechenprozess durchzuführen einfach eine statische, im Cache liegende Datei von der Platte holt und ausliefert, statt erneut zu rechnen.

          Hab ich grad weiter unten geschrieben. Bei Seiten, die sich bei jedem AUfruf ändern (News, Zufallsinhalte, Titelanzeigen von Webradios, etc.) bringt sowas gar nichts. Deshalb sag ich die ganze Zeit schon, das Smarty, je nach Einsatzzweck, die Geschwindigkeit gewaltig verringern kann.

          Ob die Performance höher oder niedriger wird, hängt _grundsätzlich_ vom Anwendungsfall ab und kann nie pauschal beantwortet werden.

          Möge das "Self" mit euch sein

          --
          Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
    2. echo $begrüßung;

      vielleicht könnte man meine Fragestellung etwas abändern in, macht eine Template Engine wie z.B. Smarty überhaupt Sinn?

      Diese Frage ist zu pauschel und lässt sich nicht mit ja oder nein beantworten. Es kommt immer auf das konkrete Prejekt an.

      Gehen wir mal von einem etwas größerem Projekt mit Datanbankanbindung aus.

      Auch das ist mir noch zu vage. Vielleicht reicht das EVA-Prinzip, vielleicht ist ein Template-System angebracht, vielleicht ist MVC das Mittel der Wahl. Es hängt oft auch davon ab, wie vertraut der/die Programmierer mit den Techniken ist/sind.

      Was ich bisher so erfahren habe ist, dass man wunderbar Programlogik von Design trennen kann und aus Performancengründen ist es wohl sehr empfehlenswert.

      Eher aus Übersichtlichkeitsgründen. Jeder zusätzliche Aufwand, wie beispielsweise zuerst ein Array anzulegen und dieses dann auszugeben statt gleich bei der Datenbank-Abfrage die Ausgabe zu erzeugen, ist nicht umsonst zu haben. Doch was ist am Ende teurer, die Entwicklungs- und Wartungskosten für unübersichtlichen/vermischten Code oder zusätzliche Hardware um die Last zu verteilen?

      Was den ersten Punkt angeht, Code von Design trennen kann man doch auch bestens mit reinem PHP, also ergibt sich für mich nur einen Vorteil: Performance. Wie sieht ihr das?

      Mein derzeitiger Favorit zur PHP-Anwendungserstellung ist das Zend Framework. Dieses arbeitet nach dem MVC-Muster. Ein Template-System bringt es nicht mit, das kann jeder selbst in den V(iew)-Teil einbinden. Mitgeliefert wird aber Zend_View, eine Klasse, die auch auf einfache PHP-Art-und-Weise die vorher an sie übergebenen Daten in der zu rendernden Datei einfügt.

      Ansonsten gehe ich nicht nach der Devise "Ich hab gehört, XYZ sei gerade in / das Beste. Genau so muss man es machen", sondern schaue mir die vorhandenen Techniken an und entscheide dann selbst, was für das jeweilige Ziel angebracht ist. (Mit jahrelanger Erfahrung ist das auch nicht allzu schwer :-)

      echo "$verabschiedung $name";

    3. hallo,

      vielleicht könnte man meine Fragestellung etwas abändern in, macht eine Template Engine wie z.B. Smarty überhaupt Sinn?

      Dann noch einmal: Smarty _ist_ keine Template-Engine, aber es _nutzt_ eine eigene. Wie und warum, ist im Handbuch (ich habs dor bereits verlinkt) erschöpfend dargestellt.

      Gehen wir mal von einem etwas größerem Projekt mit Datanbankanbindung aus

      Ok, die Zitatesammlung ist genau so etwas: Datenbankanbindung (in diesem Fall PostgreSQL], XML-Funktionnen (für die Feeds), Smarty, und eine gewisse "Größe". Wir haben bei der Zusammenstellung der Software, die ja erst im April diesen Jahres richtig losging, sehr viel über Smarty gelernt, es aber allenfalls zu 10 Prozent wirklich genutzt. Der Performance-Gewinn ist unstrittig, der konzeptionelle Nutzen ebenfalls.

      Code von Design trennen kann man doch auch bestens mit reinem PHP

      Smarty _ist_ eine PHP-Lösung. Vermutlich willst du dich mit den Dingen, die du ansprichst, doch erst etwas näher beschäftigen.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. Hallo Christoph,

        vielleicht könnte man meine Fragestellung etwas abändern in, macht eine Template Engine wie z.B. Smarty überhaupt Sinn?

        Dann noch einmal: Smarty _ist_ keine Template-Engine, aber es _nutzt_ eine eigene. Wie und warum, ist im Handbuch (ich habs dor bereits verlinkt) erschöpfend dargestellt.

        vielleicht bin ich genauso blind wie Pierre. Ich lese auf der von Dir verlinkten Handbuchseite zuallererst

        <zitat>
            Smarty - die kompilierende PHP Template-Engine
        </zitat>

        Ah ja. Smarty ist keine Template-Engine, sondern eine kompilierende Template-Engine. Vielleicht macht das ja einen Unterschied. Vielleicht steht in dem vielversprechenden Abschnitt "Was ist Smarty" genauer, was Smarty ist. Ok, ich lese gleich im ersten Satz des ersten Absatzes:

        <zitat>
            Smarty ist eine Template-Engine für PHP.
        </zitat>

        Ja was nun? Wie geht daraus hervor, was Du hier behauptest:

        Dann noch einmal: Smarty _ist_ keine Template-Engine

        Irgendwie passt das nicht zusammen. Aber vielleicht kannst Du mir das ja genauer erklären und die dazu passenden Handbuchabschnitte verlinken.

        Danke

        Vinzenz

        1. <zitat>
              Smarty ist eine Template-Engine für PHP.
          </zitat>

          Ja was nun? Wie geht daraus hervor, was Du hier behauptest:

          Dann noch einmal: Smarty _ist_ keine Template-Engine

          Irgendwie passt das nicht zusammen. Aber vielleicht kannst Du mir das ja genauer erklären und die dazu passenden Handbuchabschnitte verlinken.

          das würde mich auch mal brennend interessieren...

        2. Ja was nun? Wie geht daraus hervor, was Du hier behauptest:

          Dann noch einmal: Smarty _ist_ keine Template-Engine

          Irgendwie passt das nicht zusammen. Aber vielleicht kannst Du mir das ja genauer erklären und die dazu passenden Handbuchabschnitte verlinken.

          ich glaube es hat christoph die sprache verschalgen ;)

          1. hallo Pierre,

            ich glaube es hat christoph die sprache verschalgen ;)

            I wo. Ich mußte bloß dringend in den Wald und Steinpilze ernten. Die wachsen grade. Und in den nächsten Tagen wird der Holunder reif, was meine Zeit, wie in jedem Jahr im Septemvber, enorm beanspruchen wird.

            Grüße aus Berlin

            Christoph S.

            --
            Visitenkarte
            ss:| zu:) ls:& fo:) va:) sh:| rl:|
            1. Hallo.

              Ich mußte bloß dringend in den Wald und Steinpilze ernten.

              Hoffentlich hattest du diesmal eine Brille auf. Beim letzten Sammeln scheint jedenfalls etwas halluzinogenes dabei gewesen zu sein. -- "Viele, viele bunte Smarties"
              MfG, at