Seite 1 von 1

eigene Template Klasse will nicht

Verfasst: 12.10.2006 17:48
von Ambience
Hallo, also ich habe folgendes Problem mit meiner eigenen Template class...

Code: Alles auswählen

<?PHP

include('includes/template.class.php');

$template = new template();

$template->assign('header', 'header');
$template->assign('content', 'content');
$template->assign('footer', 'footer');

$template->display('fb/index');
?>
dieses dort, erzeugt eine solche ausgabe
header{content} {footer}
also es parst mir nur den ersten platzhalter :-(

die template class sieht wie folgt aus:

Code: Alles auswählen

<?php
class template
{
  var $left_delimeter = '{';
  var $right_delimeter = '}';
  var $template_dir = 'templates/';
  var $template_extension = '.html';
  var $header = 'overall_header';
  var $footer = 'overall_footer';
  var $assigns = array();
  
  function template()
  {
  }
  
  function assign($name, $value = '')
  {
    if (!empty($value))
    {
      $this->assigns[$name] = $value;
    }
    else
    {
      while(list($key, $value) = each($name))
      {
        $this->assigns[$key] = $value;
      }
    } 
  }
  
  function parse($file)
  {
    $file = file_get_contents($file);
    
    while(list($key, $value) = each($this->assigns))
    {
      if(preg_match('/(' . $this->left_delimeter . ')(' . $key . ')(' . $this->right_delimeter . ')/', $file))
      {
        $file = preg_replace('/(' . $this->left_delimeter . ')(' . $key . ')(' . $this->right_delimeter . ')/', $value, $file);
      }
    }
    echo $file;
  }
  
  function display($template_name)
  {
    $explode = explode('/', $template_name);
    $header = $explode[0] . '/' . $this->header . $this->template_extension;
    $footer = $explode[0] . '/' . $this->footer . $this->template_extension;
    self::parse($this->template_dir . $header);
    self::parse($this->template_dir . $template_name . $this->template_extension);
    self::parse($this->template_dir . $footer);
  }
}
?>
Wäre sehr dankbar wenn mir einer auf die Sprünge helfen könnte.