Templates Blöcke die optimale Technik?

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

  • #31
    Original geschrieben von mrhappiness
    PHP-Code:
    function parse($code, &$array) {
      
    $pattern '%\\<\\!-- BEGIN (.*?) --\\>(.*?)\\<\\!-- END (\\\\1) --\\>%s';
      
    preg_match_all($pattern
        
    $code
        
    $matches
        
    PREG_SET_ORDER);
      foreach (
    $matches as $match) {
        
    $parts preg_split($pattern$match[2]);
        
    preg_match_all($pattern$match[2], $blocks);
        
    $blocks $blocks[0];
        
    $array[] = array('name' => $match[1]);
        
    $index count($array) - 1;
        foreach (
    $parts as $key => $value) {
          if (!empty(
    $value))
            
    $array[$index][] = $value;
          if (isset(
    $blocks[$key]))
            
    parse($blocks[$key], $array[$index][]);
        }
        if (isset(
    $blocks[++$key]))
          
    parse($blocks[$key], $array[$index][]);
      }

    Versuch das mal, wenn's klappt, schaffst du den Rest alleine *g*
    Dein erster Snippset war schon ne gute Idee....bisher siehts so aus:

    PHP-Code:
    function getblocks ($string,&$array)
        {
            if( 
    preg_match_all('%<!-- BEGIN (.+) -->(((?R)|(.*))*)<!-- END -->%isU',
                
    $string,
                
    $matches) )
                    foreach (
    $matches as $key => $var)
                      if ( !empty(
    $matches[1][$key]) )
                        {
                          
    $array[] = array('name' => $matches[1][$key]);
                          
    getlist($matches[2][$key], $array[count($array) - 1]['nested']);
                          if ( 
    count($array[count($array) - 1]['nested']) == )
                               unset(
    $array[count($array) - 1]['nested']);
                        }
        } 
    Der Rest nunja wird wohl mit nem preg_split Geschichte sein
    Zuletzt geändert von Payne_of_Death; 12.01.2005, 19:19.
    [color=blue]MfG Payne_of_Death[/color]

    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
    [color=red]Merke:[/color]
    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

    Murphy`s Importanst LAWS
    Jede Lösung bringt nur neue Probleme
    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

    Kommentar


    • #32
      Original geschrieben von mrhappiness
      Und das PHP-Skript soll wirklich langsamer sein, als das Skript, dass du bastelst?
      Oder ist die Syntax für einen Nichtentwickler im geparsten Template einfacher?
      Die Syntax ist für mich Persönlich bisschen umständlich,
      ich könnte mir vorstellen das duch den Objekt Orientieren Ansatz hier eine Geschwindigkeitsminderung erfolgen könnte.

      Kommentar


      • #33
        Original geschrieben von treo
        Die Syntax ist für mich Persönlich bisschen umständlich
        Templatesyntax oder Syntax des geparsten?

        Letzteres ist PHP, also die Syntax deiner "Templateengine" und ersteres, naja, ersteres kann man ja anpassen wie man möchte. Ich hab ne Datei Namens command.loop.php, dadrin erfolgt das Kompilieren von loops und das Ergebnis wird an die Templateklasse zurückgeliefert. So kannst du die Syntax anpassen, wie du möchtest und Schleifen einfach nicht ermöglichen, indem du die command.loop.php löschst. Genauso kannst du mit einer Datei namens command.if.php Bedingungen in den Templates ermöglichen. Und du musst dich nicht mit PHP-Syntax auseinandersetzen, wobei du das natürlich auch machen kannst, wenn du willst.

        Du kannst command.loop.php auch in command.schleife.php umbenennen und dafür sorgen, dass es im Template so aussehen muss:
        Code:
        {schleife für user und benutzer der_user}
        Und in der_user hast du dann den aktuellen Eintrag des Arrays
        Zuletzt geändert von mrhappiness; 12.01.2005, 19:42.
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar

        Lädt...
        X