Estoy empezando a implementar el patrón arquitectónico Modelo - Vista - Controlador.
Luego de ver varios ejemplos y comenzar a programar me he encontrado con el siguiente error en mi controlador:
Código:
Allowed memory size of 25165824 bytes exhausted (tried to allocate 16384 bytes)
Controlador:
Código PHP:
<?
require_once('modelo_hardware.php');
class handler {
public function buscar ($codigo) {
//Instanciar objeto de la clase hardware.
$hardware = new hardware;
//Cargar plantilla vacia
$pagina = $this->cargar_plantilla('- Buscar Registro -');
//Carga modulo de busqueda
$buscador = $this->cargar_pagina('vistas/html/equipo_buscar.html');
//Utiliza el buffer hasta el cierre
ob_start();
//Realiza consulta al modelo
$row = $hardware->buscar($codigo);
// Si hay resultados
if ($row) {
$titulo = 'Resultados de la Búsqueda';
// Incluye vista con los resultados
include 'vistas/html/equipo_resultados.php';
// Carga los resultados almacenados en buffer. Especie de cierre de funcion 'ob_start()'
$table = ob_get_clean();
// Reemplaza CONTENIDO
$pagina = $this->reemplazar_contenido('/\#CONTENIDO\#/ms', $buscador.$table, $pagina);
}
else {
//Registra mensaje de error
$pagina = $this->reemplazar_contenido('/\#CONTENIDO\#/ms',$buscador.'<h4>No se encontraron resultados</h4>', $pagina);
}
// Mostrar pagina final.
$this->vista_pagina($pagina);
}
public function incluir ($datos = array()) {
$hardware = new hardware;
$pagina = $this->cargar_plantilla('- Incluir Registro -');
$registrar = $this->cargar_pagina('vistas/html/equipo_insertar.html');
ob_start();
$result = $this->incluir($datos = array());
$pagina = $this->reemplazar_contenido('/\#CONTENIDO\#/ms',$registrar,$pagina);
ob_get_clean();
if (!$result) {
echo '<script> alert("Error al Insertar") </script>';
}
else {
echo '<script> alert("Registro Incluido Satisfactoriamente") </script>';
}
$this->vista_pagina($pagina);
}
public function principal() {
$pagina = $this->cargar_plantilla('Página Principal');
$html = $this->cargar_pagina('vistas/html/equipo_principal.html');
$pagina = $this->reemplazar_contenido('/\#CONTENIDO\#/ms',$html,$pagina);
$this->vista_pagina ($pagina);
}
private function cargar_plantilla($title = 'Sin Titulo') {
$pagina = $this->cargar_pagina('pagina.php');
$menu = $this->cargar_pagina('vistas/html/menu.php');
$pagina = $this->reemplazar_contenido('/\#MENU\#/ms', $menu, $pagina);
$pagina = $this->reemplazar_contenido('/\#TITULO\#/ms', $title, $pagina);
return $pagina;
}
//Carga una pagina y la mantiene en memoria
private function cargar_pagina($pagina) {
return file_get_contents($pagina);
}
//Muestra la pagina cargada
private function vista_pagina($html) {
echo $html;
}
// Su nombre lo dice mardito bruto, ¿te dejaron caer chiquito?
private function reemplazar_contenido($reemplaza='/\#CONTENIDO\#/ms',$poresto,$enestapagina) {
return preg_replace($reemplaza,$poresto,$enestapagina);
}
}
?>
El módulo de buscar, antes de implementar el de incluir funcionaba a la perfección.
Si necesitan algún otro código para poder dar solución por favor avisar.
Agradezco de antemano cualquier sugerencia.