El controlador no accede (directamente) a la base de datos, ni genera (directamente) HTML; se limita a obtener valores, procesarlos y obtener otros valores (además de la gestión de sesiones, cookies, logs y ese tipo de tonterías). Lo típico es recoger los valores de un formulario, procesarlos, trabajar un poco con la base de datos, procesar algo más, y almacenar el resultado en una o varias variables:
$letra = $POST["letra"];
if (($letra < "A") || ($letra > "Z")) {
include "letranovalida.php";
} else {
$productos = obtener_productos ($letra);
include "listadoproductos.php";
}
letranovalida.php y listadoproductos.php son parte de la vista. El segundo fichero hace uso de la variable $productos para mostrar el listado. Como se puede ver, el controlador no se mete con HTML; se limita a obtener el listado de la base de datos y pasárselo, tal cual, a la vista.
RazonesDe este modo, el código que "hace algo" está perfectamente separado del código dedicado a crear HTML, lo que ayuda a evitar el spaghetti.
3. V de VistaLa vista es la parte de la aplicación dedicada a generar HTML. Puede ser simple HTML estático:
<h1>Listado de productos</h1>
O HTML dinámico generado en respuesta a una consulta, por ejemplo:
<table>
<?php
foreach ($productos as $p) {
?>
<tr><td>
<a href="verproducto.php?id=<?=$p["id"]?>"><?=$p["nombre"]?></a>
</td>
<td><?=$p["cantidad"]?></td>
</tr>
<?php } ?>
</table>
La vista no debería llamar a ninguna función; debería limitarse a construcciones de control de flujo simple: if, for/foreach, while, ...
Todas las variables empleadas por la vista deberían proceder del controlador; utilizar directamente variables procedentes del usuario es una práctica muy peligrosa.
RazonesTener la vista separada del controlador permite cambiar la aplicación para que genere, en lugar de HTML, algo distinto (por ejemplo, WML), sin tener que tocar más que una parte completamente delimitada del código.
Básicamente, MVC es esto. Lo demás (objetos, etc) son refinamientos
Usuarios que han visto este tema también han visto...
- Solucionar errores con MySQL
- Interfaz de navegación por pestañas con Ajax y PHP
- Web Service: WSDL y UDDI
- Comentarios en PHP
- Recuperado la calidad de una imagen JPEG en PHP
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.