Bueno Ferny, si bien la "idea" prncipal está bien, te cuento un pequeño "secreto" : el lenguaje PHP YA ES por si mismo, un motor de plantillas. Cómo es esto ? Bueno, simple, donde vos coloques en una plantilla algo como:
Código PHP:
<?=$contenido?>
PHP te lo va a reemplazar por el contenido de la variable "contenido".
Así de simple, asi de directo. El tema que hay que recordar, o mejor dicho, tener en cuenta, es que separar la lógica de presentación de la lógica de negocio ( business logic ) NO IMPLICA tener que separar PHP del HTML.
Entonces, yo podría reescribir tus clases de esta manera :
----- plantilla.php ----
Código:
<html>
<head>
<title><?=$titulo?></title>
</head>
<body>
<?=$contenido?>
</body>
</html>
-------- template.php ----------
Código PHP:
<?php
class Template
{
var $_variables = array();
var $_contenido = "";
function asignar($variable, $valor)
{
$this->_variables[$variable] = $valor;
}
function limpiar()
{
unset($this->_variables);
}
function parsear($plantilla)
{
extract($this->_variables);
ob_start();
include($plantilla);
$this->_contenido = ob_get_contents();
ob_end_clean();
}
function mostrar()
{
return $this->_contenido;
}
}
?>
---------- Ejemplo.php -----------
Código PHP:
<?php
include('Template.php');
$tpl = new Template;
$tpl->asignar('titulo', 'Bienvenidos a la página de Ferny');
$tpl->asignar('contenido', 'Esta es mi página web');
$tpl->parsear('plantilla.php');
echo $tpl->mostrar();
?>
(Perdon por los posibles errores de sintaxis, pero se hace dificil escribir codigo al vuelo y bien))
Fin. The End. Simple y directo. Al grano.
Ventajas? Al ser PHP el que se encarga del trabajo, es él mismo el que utiliza el mejor método para leer el archivodel disco y reemplazar las variables, en vez de utilizar str_replace ( que si bien es una función rápida, en grandes cadenas de strings, se vuele menos eficiente).
Pero claro, este es un ejemplo básico básico. Podés extender tu clase de muchisimas maneras. Eso si, el consejo de Cluster no estuvo para nada de más, yo te recomiendo que leas un poco el código de NokTemplates y saques ideas de código, que está muy bien planteado. Es una buena clase de Templates, rápida.
Bueno, cualquier otro comentario que tengas, no dudes en preguntar