Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/08/2012, 21:24
Avatar de asdmaster
asdmaster
 
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Como crear clase View en MVC

Hola quisiera su opinión y ayuda respecto de como debo crear la clase para la vista en un MVC, tengo varias lineas de razonamiento
pero no se si voy bien encaminado o de frenton mi planteamiento es incorrecto.

Cual de las siguientes metodologías me conviene mas.

1- Cada vez que cargue una vista hacer directamente un require a la vista para capturar el contenido html generado con ob_get_contents()
y guardarlo en una variable a la espera de un metodo output();

les dejo el codigo lo mas simplificado posible...

Código PHP:
class View
{
   private 
$_buffer;

   public function 
load($file$data){
      
// aca hago el require, uso las funciones ob_start(), ob_get_contents(), etc. 
      // capturo el retorno y lo asigno a la variable $html;
      
$this->_buffer.= $html;// almaceno el contenido de las vistas en el atributo _buffer 
   
}

   
// imprime la salida del buffer
   
public function output(){
      echo 
$this->_buffer    
   
}

2- Cada vez que agregue una vista guardar en un array los nombres de las vistas y sus variables para tenerlos disponibles
en el método output que sera invocado justo antes de terminar todos los scripts.

Código PHP:
class View
{
   private 
$_views = array();

   public function 
add($file$data){    
      
$this->_views[] = array('file' => $file'data' => $data);
   }

   public function 
output(){    
      foreach(
$this->_views as $view => $data){
         require(
$view['file']);// Aca voy cargando las vistas
      
}
   }

3- seria una combinación de ambos.

Bueno a mi entender y siendo novato en php la opcion 2 es mas limpia y rápida llama a todas las vistas juntas.
Pero he visto que es común en los frameworks pasar un tercer parámetro al método que carga la vista, un boleano
si es TRUE retorna la vista por lo que se ajustaría al ejemplo uno.

La verdad quiero hacer mis desarrollos siguiendo standares y convenciones por eso pido su consejo.
tambien pretendo implementar layouts.

Saludos!!