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);
}
}
?>