Ver Mensaje Individual
  #45 (permalink)  
Antiguo 22/01/2009, 07:04
tute666
 
Fecha de Ingreso: diciembre-2008
Mensajes: 39
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Crear un framework PHP

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.

Última edición por tute666; 23/01/2009 a las 06:07 Razón: --quote ++code