Estaba leyendo el codigo.
te pasteo una clase de vista que utilizo yo, esta implementado de manera mucho mas simple y segun mi gusto, comoda.
Código PHP:
<?php
/**
* http://www.massassi.com/php/articles/template_engines/
* Brian Lozier 2003 ([email protected])
* Modified by: Matthew Hughes 2007 ([email protected])
*/
class View {
protected $vars; /// Contiene variables del template
protected $file;
/**
* Constructor
* Ruta del directorio de plantillas. esta hardcodeado si.
*
* @param $file string template a cargar
*/
public function __construct($file = null) {
$file = ROOT.DIRECTORY_SEPARATOR."views".DIRECTORY_SEPARATOR.$file;
if(file_exists($file))
$this->file = $file;
else
throw new Exception("Plantilla no existe: $file.");
}
/**
* setea variables de plantilla. si es una plantilla, la renderea e incluye.
*/
public function __set($name, $value) {
$this->vars[$name] = is_a($value, "View") ? $value->fetch() : $value;
}
public function __get($name) {
return $this->vars[$name];
}
/**
* Abre, paresea y devuelve la plantilla.
* @param $file string the template file name
*/
function fetch() {
if(count($this->vars) > 0)
extract($this->vars); // Extrae la variables al entorno de la plantilla.
ob_start(); // Captura el buffer de salida.
include($this->file); // Include archivo.
$contents = ob_get_contents(); // devuelve contenido del archivo, con las variables reemplazadas.
ob_end_clean(); // limpia buffer.
return $contents; // retorna la plantilla.
}
}
?>
Notá como el lenguaje de la plantilla es php comun y corriente. no hace falta ningun tipo de lenguaje intermedio. por otro lado, no hace falta hacer ningun reemplazo de variables, se utiliza el nativo de php, haciendolo mas performante.
Tambien notá la ultilizacion de funciones "magicas" set y get y mientras aprovechamos la magia de php5 y no hacemos el codigo tan php4 con setNombreVariable. y de paso, extremadamente redundante y complicado.