[PHP] Template-System propleme

Hallo zusammen,
habe mir aus verschiedenen Tutorials ein “Template-System” zusammen gebaut.
Ich habe ein Template darauf etwas angepasst, doch es gibt jetzt schon bereits einen Fehler. Der browser bekommt keinen quelltext. Errorreporting ist auf E_ALL.
Hier mal die Class:

[code]<?php
class Template
{
protected $_template;
protected $_vars;

public function __construct($template)
{
    $this->setFile($template);
}

public function assign($var, $value)
{
    if(isset($this->_vars[$var]))
    {
        throw new InvalidArgumentException('Variable has already been set');
    }
   
    $this->_vars[$var] = $value;
}

public function render()
{
    ob_start();
    include_once($this->_template);
    $data = ob_get_clean();
    return $data;
}

public function setFile($template)
{
if(!file_exists($template) || !is_readable($template))
{
throw new InvalidArgumentException(“Template file {$template} not found”);

        return false;
    }   
  
  $this->_template = $template;
  
  return true;

}

public function __get($var)
{
    return isset($this->_vars[$var]) ? $this->_vars[$var] : '';
}

}
?>[/code]
Dann die index.php von der die seiten aufgerufen werden:

require_once 'class/class.Template.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);
[...]
$tpl = new Template($page.'.html');
$tpl->assign('pages', $pages);
$tpl->assign('title', ucfirst($page));
$tpl->assign('current', $page.'.html');
$tpl->assign('user', $user);

echo $tpl->render();

Und das (teilweise) angepasste Template ist da: henry-hilft.de/html/index.html
Ich finde einfach den fehler nicht… Schonmal vielen dank für eure Hilfe.

Gib deinen Templates die Endung .php, damit sie vom PHP-Interpreter geparst werden.

aber ist das nicht unnötig? Die werden ja nicht direkt aufgerufen, sondern included durch die class :read:

Das ist wahr. Die Dateiendung sollte bei einem include keine Auswirkung haben.

Ist henry-hilft.de/ die Domain auf der das Script läuft?
d.h. dein PHP Script heißt index.php und im selben Verzeichnis liegt das Template index.html?
Wenn das der Fall ist, dann liegt das Problem genau da. Der Apache Webserver bevorzugt bei vielen Konfigurationen die Datei index.html vor der Datei index.php. Dem kannst du abhelfen, indem du für die ganzen Template Dateien ein eigenes Verzeichnis nutzt.

Ja, Das ist richtig.
Aber ich habe henry-hilft.de/index.php aufgerufen, um das zu umgehen. Das mit dem extra verzeichnis wollte ich machen, sobald alles funktioniert. Aber ich machs schonmal in ein neues verz.

Wieso vergeudet ihr so viel Zeit mit template basteln?? Gibt heutzutage ja ne Menge an fertiger templates. Hab meins bei Templatemonster gezogen und war ganz easy zum Installieren. Aber jeder, wieer meint. tanner