Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/10/2003, 11:01
Avatar de Webstudio
Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
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
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com

Última edición por Webstudio; 09/10/2003 a las 08:07