Вот реализовал такой небольшой класс:

Код:
<?php
class Template {
  private $filename;  // Имя файла шаблона
  private $variables;  // Переменные
  private $buffer;      // Буффер

  // Инициализация $filename - имя файла шаблона
  public function __construct($filename) {
    $this->filename = $filename;  // Имя файла
    $this->variables = array();     // Переменные массив
  }

  // Добавляем переменные $key - имя переменной, $value - значение
  public function add_variable($key, $value) {
    $this->variables[$key] = $value;  // Добавляем ассоциативный массив
  }

  // Выполняем отрисовку
  public function render() {
    $this->buffer = file_get_contents($this->filename);  // Загружаем файл, и содержимое передаём переменной
    foreach($this->variables as $key => $value) {  
      // Под циклом все переменные заменяем 
      $this->buffer = str_replace($key, $value, $this->buffer);
    }
    // Возвращаем
    return $this->buffer;
  }

  // Сохраняем в файл
  public function render_cache($filename) {
    file_put_contents($filename, $this->render());
  }
}
?>

Пример:

Код:
$templ = new Template('main.template');
$templ->add_variable('%title%', 'Заголовок');
$templ->add_variable('%content%', 'Тут текст!');
echo $templ->render();
$templ->render_cache('test.cache');