Modelo Vista Controlador (MVC)

Introducción a MVC
¿Qué es MVC?
El patrón de diseño Modelo-Vista-Controlador (MVC) es una arquitectura de software que separa la aplicación en tres componentes principales: el modelo (datos y lógica de negocio), la vista (interfaz de usuario) y el controlador (manejo de interacciones y flujo de datos). Esta separación facilita la organización del código, la reutilización de componentes y la escalabilidad de aplicaciones.

Historia y evolución del patrón MVC
MVC fue introducido por Trygve Reenskaug en 1979 mientras trabajaba en el laboratorio de Xerox PARC. Originalmente, se diseñó para la programación en Smalltalk, pero con el tiempo se adoptó en distintos lenguajes y frameworks, como Java, C#, PHP, JavaScript y Python.

Comparación con otras arquitecturas
- MVP (Modelo-Vista-Presentador): Similar a MVC, pero con el presentador actuando como intermediario entre la vista y el modelo.
- MVVM (Modelo-Vista-ViewModel): Se usa principalmente en aplicaciones con binding de datos, como Angular.
- Arquitectura en Capas: Divide la aplicación en capas como presentación, negocio y datos, pero no define la interacción estricta entre ellas como MVC.
Beneficios y desventajas de MVC
Beneficios:
- Separación de responsabilidades
- Reutilización de código
- Mantenimiento y escalabilidad
Desventajas:
- Puede aumentar la complejidad inicial del desarrollo
- Requiere una estructura bien definida
Componentes de MVC
- Modelo (Model): Maneja los datos, la lógica de negocio y las reglas de la aplicación.
- Vista (View): Muestra la información al usuario y define la interfaz gráfica.
- Controlador (Controller): Gestiona la comunicación entre el modelo y la vista, procesando las peticiones del usuario.
Ejemplo práctico de MVC en pseudocódigo
class Modelo:
funcion obtener_datos():
return "Hola, este es un mensaje del modelo"
class Vista:
funcion mostrar_datos(datos):
imprimir(datos)
class Controlador:
funcion iniciar():
modelo = Modelo()
vista = Vista()
datos = modelo.obtener_datos()
vista.mostrar_datos(datos)
app = Controlador()
app.iniciar()
Este ejemplo muestra cómo el modelo proporciona los datos, la vista los muestra y el controlador coordina la operación.
MVC en el Desarrollo Web
Importancia de MVC en Aplicaciones Web
En el desarrollo web, el patrón MVC permite separar la lógica de negocio de la interfaz de usuario, facilitando el mantenimiento y escalabilidad de las aplicaciones. La mayoría de los frameworks modernos, como Laravel, Django y ASP.NET Core, siguen esta arquitectura.
Flujo de Trabajo en MVC Web
- El usuario envía una solicitud a la aplicación web.
- El Controlador recibe la solicitud, la procesa y llama al Modelo si es necesario.
- El Modelo interactúa con la base de datos y devuelve los datos al Controlador.
- El Controlador envía los datos a la Vista para ser renderizados.
- La Vista muestra la información al usuario en el navegador.
Implementación de MVC en PHP
Estructura de Archivos para un Proyecto MVC en PHP
/mvc-php/
│-- /app/
│ │-- /controllers/
│ │-- /models/
│ │-- /views/
│-- /public/
│ │-- index.php
│-- /config/
│-- .htaccess
Creación de un Mini Framework MVC en PHP
Modelo (Modelo.php)
<?php
class Modelo {
public function obtenerMensaje() {
return "Hola desde el Modelo";
}
}
?>
Controlador (Controlador.php)
<?php
require_once "Modelo.php";
class Controlador {
public function mostrarMensaje() {
$modelo = new Modelo();
$mensaje = $modelo->obtenerMensaje();
include "Vista.php";
}
}
$controlador = new Controlador();
$controlador->mostrarMensaje();
?>
Vista (Vista.php)
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo MVC</title>
</head>
<body>
<h1><?php echo $mensaje; ?></h1>
</body>
</html>
Index (index.php)
<?php
require_once "Controlador.php";
?>
Este es un ejemplo básico de MVC en PHP sin el uso de frameworks.
Resultado:

En la siguiente sesión trabajaremos con el mismo patrón desde Laravel…
