Was soll eine Template Class so können ?

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

  • Was soll eine Template Class so können ?

    Hallo Zusammen.

    Nach längerer PHP abstinenz, dachte ich mir, ich versuche mich an eine eigene Template Class.

    Sie soll nicht so überladen wie Smarty sein, aber in etwa selbe Funktionen bieten.

    Jetzt stellt sich mir die Frage , was sollte so in einer Template Class so alles eingebaut sein ?

    Derzeit sind Folgene grundfunktionen eingebaut.

    {$vars} = normale Platzhalter ersetzen
    {list from=$foo item=$bar} = Arbeitet nach dem Foreach Prinzip
    {if $foo !=bar} = Normale If Abfrage (Kann man sich drüber streiten)

    Weiterhin wird die Source template compiliert wie bei Smarty und auch in ein definiertes verzeichnis abgelegt.
    Später soll noch eine Funktion rein die abfragt vom template neuer als compiled ist, um mehr geschwindigkeit rauszuholen.

    Ich hoffe ihr koennt mir ein bischen auf die Sprünge helfen, und verzeiht meine Rechtschreibfehler

    Gruss
    Cyrus
    Windows kann alles dank 32Bit.
    Nach 32Bit, glaube ich auch das ich alles kann..

  • #2
    um ehrlich zu ein, habe ich mir diese frage heute auch gestellt.

    includes halte ich noch für ganz nützlich.
    bin mir nur noch nicht ganz im klaren, ob grundsätzlich php-incudes(php-geparst per include & ob-buffer) zugelassen werden sollen, oder nur reine template-includes(text-modus per fread).
    soetwas in der art {include file="foo.ext" mode="php/text"} schwebt mit vor, enventuell noch ein flag in der klasse, ob php-includes erlaubt sind.

    var modifiers könnte man auch noch hinzufügen.
    so in etwa (vereinfacht, ohne parameter): {$var|modificator}
    als modificator stelle ich mir als eine klasse vor, die dynamisch instanziert wird und eine vorgegebene methode implementiert, die einen string entgegennimmt und modifiziert returned.
    z.b. du übergibst deinem template daten aus einem formular und der modifikator würde sich dann um htmlentities(), nl2br(), etc. ... "kümmern".

    tjoh, das ist mir heute so in denn sinn gekommen.
    Zuletzt geändert von 3DMax; 09.12.2006, 23:54.

    Kommentar


    • #3
      Eigentlich keine schlechte idee.

      Derzeit steht bei mir noch auf den Plan
      • Include von Templates
      • Plugins (?)
      • Funktionen
      • Cache
      • Verschachtelte Listen <> Blöcke


      Ich denke mal das sollte für eine gute TemplateClass ja eigentlich reichen für alle Grundfunktionen

      Oder noch irgendwelche anregungen ?
      Windows kann alles dank 32Bit.
      Nach 32Bit, glaube ich auch das ich alles kann..

      Kommentar


      • #4
        Meiner Meinung nach sollte eine Template-Engine auf jeden Fall die Möglichkeit bieten Variablen zu ersetzen.

        Weitere sinnvolle Sachen:
        - Blöcke (genre auch verschachtelt)
        - Andere Templates einbinden (include)
        - ...

        Meine Template-Engine bietet in der Grundversion lediglich die Möglichkeit Variablen zu ersetzen, inklusive der Möglichkeit diese bei der Ausgabe zu modifizieren, die Modifikatoren selbst gehören nicht dazu.

        Darüberhinaus ist sie recht einfach erweiterbar.

        Prinzip:
        Code:
        Hallo {var1}
        wird ersetzt zu
        PHP-Code:
        return 'Hallo '.$data['var_1']; 
        Code:
        Hallo {var1 uppercase}
        wird nicht kompiliert, es sei denn, es gibt eine Datei namens name_und_version_der_engine_modifier.uppercase.php, dann wird es ersetzt zu
        PHP-Code:
        return 'Hallo '.präfix_modifier_uppercase($data['var_1'], $class_instance); 
        Bei Blöcken, Includes, ... gilt genau das gleiche Prinzip:
        Code:
        <h1>Alle Benutzer</h1>
        {loop $all_user}
        {if _first}<ul>{endif}
          <li>{user.name}</li>
        {if _last}<ul>{endif}{endloop}
        Wird nur dann kompiliert, wenn die Dateien ...command.loop.php, ...command.if.php, ...var.first.php und ...var.last.php vorhanden sind, da dort die Logik zum Generieren eines Blocks, für die if-Abfrage als solche und für die speziellen Variablen _first und _last enthalten sind.

        Ich denke, dass ist vom Ansatz her gut, da ich eine relativ schlanke Basisklasse habe, die nur das nötigste (Variablenersetzung) bietet, alles andere, was ich ggf. noch brauche, wird durch entsprechende Extensions hinzugefügt und wirklich nur bei Bedarf beim Kompilieren geladen.
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Danke für die ideen.

          Mal schauen was ich davon noch so einbauen werde.

          Das mit dem Modifieren nur Compilieren wenn auch vorhanden klingt für mich als eine sehr gute idee, genauso wie das mit dem verschachtelten Blöcken.

          Werde mich auf jedenfall nochmal melden wenn ich soweit fertig bin, und die Class hier vorstellen.
          Windows kann alles dank 32Bit.
          Nach 32Bit, glaube ich auch das ich alles kann..

          Kommentar

          Lädt...
          X