y como no lo recuerdo decidí crear un nuevo tema, asi da para que lo critiquen y esas cosas...
Código PHP:
<?php
/**
* Khaus Framework
*
* LICENSE
*
* This source file is subject to the Public license Creative Commons LPCC
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://creativecommons.org/licenses/by-nc/2.0/cl/
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* @category Khaus
* @package Khaus_View
* @copyright Copyright (c) 2010 - 2011, Khaus Corp. Chile [[email protected]]
* @license Atribucion-Licenciar Igual 2.0 Chile. CC BY-NC 2.0
* @version 8:20110527
*/
/**
* Template Class
*
* Otorga el uso de plantillas dentro de la aplicacion.
* Se debe especificar la ruta del archivo template
* este puede ser de cualquier extension compatible con php.
* los datos se asignan a travez de la propiedad publica $view
* y desde la plantilla se llaman de la misma forma
*
* @example plantilla.phtml
* <div><?php echo $this->variable; ?></div>
*
* @example index.php
* $template = new Khaus_View_Template('plantilla.phtml');
* $template->view->variable = 'datos';
* echo $template->render();
*/
class Khaus_View_Template
{
public $view;
private $_filename;
/**
* Metodo constructor
*
* Genera la instancia de $this->view para guardar
* los parametros que se entregaran a la vista y asigna
* la ruta del template a utilizar
*
* @throws si la ruta es incorrecta
* @param string $filename[optional] ruta del template
*/
public function __construct($filename)
{
// IF: La ruta del template es incorrecta
if (!is_file($filename)) {
$message = sprintf('Template no encontrado (%s)', $filename);
throw new Exception($message);
}
$this->view = new stdClass();
$this->_filename = $filename;
}
/**
* Retorna las peticiones de variables de la plantilla
*
* Si desde el template se llama directamente a la variable
* con el metodo magico __get se captura la peticion y se envia
* el valor correspondiente a lo almacenado dentro del objecto view
* por lo tanto desde la plantilla se pueden traer los datos de dos formas
* @example :
*
* <?php echo $this->view->dato; ?>
* <?php echo $this->dato; ?>
*
* @param string $name nombre del parametro
* @throws en caso de no existir el parametro
* @return string
*/
public function __get($name)
{
// IF: el nombre del atributo no existe dentro del objeto view
if (!isset($this->view->$name)) {
$message = sprintf('Parametro no existente (%s)', $name);
throw new Exception($message);
}
return $this->view->$name;
}
/**
* Entrega el template procesado
*
* Mediante control de flujos captura la plantilla
* por lo tanto se asignan las variables solicitadas
* al objeto mediante $this
*
* @throws si la plantilla no a sido asignada
* @return string template procesado
*/
public function render()
{
ob_start();
include $this->_filename;
$template = ob_get_contents();
ob_end_clean();
return $template;
}
/**
* Imprimir template
*
* Si se requiere imprimir o usar directamente el objeto como string
* utiliza el metodo render para devolver el template procesado
*
* @access public
*/
public function __toString()
{
return $this->render();
}
}
PD: los tildes han sido omitidos intencionalmente de los comentarios por razones que ni yo mismo entiendo
PD2: olvide poner las etiquetas del post :C