la soluzione realizzata da me ed un amico è questa:
codice:
<?php
class tpl
{
//definizione di variabili della classe che non sono istanziate ma che hanno già un valore definito
//tranne template che verra passato alla rispettiva funzione
var $controlla = FALSE;
var $template = "";
var $variabili = array();
var $blocchi = array();
var $blocchi_del = array();
//metodo costruttore si acquisisce il template
function tpl($file)
{
$this->template = implode("",file("$file"));
if ($template <> "")
{
$this->controlla = TRUE;
}
else
{
$this->controlla = FALSE;
}
if ($file == NULL)
{
die("<h3>Errore nessun template è stato selezionato compilazione template interrotta!</h3>");
}
if (file_exists($file) == FALSE)
{
die("<h3>Errore il template selezionato: <font color=\"#FF0000\">$file</font> è inesistente!</h3>");
}
}
//funzione per assegnare le variabili al template
function assegna($vars)
{
while (list($key, $val) = each($vars))
{
$this->_variabili["[".$key."]"] = $val;
}
}
//funzione che crea un blocco
function crea_blocco($nome)
{
if ($nome == "" || $nome == NULL)
die("<h3>Errore nella creazione del blocco parametro passato è uguale a null!</h3>");
$temp = explode("", $this->template);
$this->blocchi_del[$nome] = $temp[1];
}
//funzione che inserisce i blocchi
function assegna_variabili_blocco($nome, $array)
{
if ($nome == "" || $nome == NULL || $this->blocchi_del[$nome] == "" || $this->blocchi_del[$nome] == NULL)
die("<h3>Errore nell'assegnazione delle variabili del blocco '$nome' parametri passati uguali a null!</h3>");
$support = array();
while (list($key, $val) = each($array))
{
$support["[".$nome.".".$key."]"] = $val;
}
$code = strtr($this->blocchi_del[$nome], $support);
$this->blocchi[$nome] .= $code;
}
//si stampa il template
function stampa()
{
while (list($key, $val) = each($this->blocchi))
{
$this->template = str_replace($this->blocchi_del[$key],$val,$this->template);
}
print strtr($this->template, $this->_variabili);
reset ($this->_variabili);
}
}
?>