Ver Mensaje Individual
  #7 (permalink)  
Antiguo 11/08/2013, 18:07
mathiasmontiel
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 11 años, 3 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);         
    }

}
?>