Ver Mensaje Individual
  #7 (permalink)  
Antiguo 11/08/2013, 18:07
mathiasmontiel
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Combinar funciones

hm no había visto ese ejemplo que pusiste y me parece más práctico, voy a analizar mi código de nuevo. Pero más o menos ya estoy entendiendo y mientras tanto hice este código, entendí bien? En la clase controlador puse la función para hacer la consulta y devolver un array. Y en la clase vista puse las funciones para cargar los sectores de la página y una para recibir el array de la clase controlador, luego procesar la vista:


Código PHP:
//Clase del controlador
class controlador 
{

    
//Función del controlador que realiza la consulta desde el modelo y carga el resultado en un array
    
function consultaNoticia($url, $noticia_id)
    {
                
$noticia = new noticia($url, $noticia_id);
                
$array = $noticia->noticias($url, $noticia_id);
        return 
$array;
    }        
}

//Clase de la vista
class vista 
{

    
//Función que obtiene el array del controlador, procesa la vista y finalmente muestra la página
    
function mostrarNoticia($url, $noticia_id)
    {
        
//Carga el skin/layout
        
$pagina = $this->cargarVista();
        
        
//Obtiene el array desde el controlador
        
$consulta = new controlador;
        
ob_start();
        
$array = $consulta->consultaNoticia($url, $noticia_id);

        if(
$array!='')
        {
        
            
//Carga el modulo noticia.php
            
include 'sistema/vista/modulos/noticia.php';
            
$modulo = ob_get_clean();
        
            
//Parsea el resultado
            
$pagina = $this->reemplazarContenido('/\#CONTENIDO\#/ms', $modulo , $pagina);
        }
        else
        {
            
$pagina = $this->reemplazarContenido('/\#CONTENIDO\#/ms' ,$modulo.'No hay registros' , $pagina);
        }
        
        
//Muestra la página completa y chau!
        
$this->mostrarPagina($pagina);
    }

    
//Función para cargar la vista/skin/layout
    
function cargarVista()
    {
        
$pagina = $this->cargarPagina('sistema/vista/vista.php');
        
$cabecera = $this->cargarPagina('sistema/vista/sectores/cabecera.php');
        
$pagina= $this->reemplazarContenido('/\#CABECERA\#/ms' ,$cabecera , $pagina);
        
$lateral = $this->cargarPagina('sistema/vista/sectores/lateral.php');
        
$pagina = $this->reemplazarContenido('/\#LATERAL\#/ms' ,$lateral , $pagina);        
        return 
$pagina;
    }

    
//Función para cargar páginas
    
function cargarPagina($pagina)
    {
        return 
file_get_contents($pagina);
    }
    
    
//Función para mostrar las páginas
    
function mostrarPagina($html)
    {
        echo 
$html;
    }
    
    
//Función para reemplazar el contenido de las páginas
    
function reemplazarContenido($in='/\#CONTENIDO\#/ms', $out,$pagina)
    {
        return 
preg_replace($in, $out, $pagina);         
    }

}
?>