- Modelo (Model)
- Vista (View)
- Controlador (Controller)
- Ejemplo práctico
- Tabla comparativa de patrones
- Tutorial sobre el Patrón MVC en PHP
El patrón Modelo-Vista-Controlador (MVC) es un patrón de diseño utilizado en el desarrollo de software para separar la lógica de negocio de la interfaz de usuario. MVC divide una aplicación en tres componentes principales: Modelo, Vista y Controlador.
Modelo (Model)
El Modelo es responsable de manejar la lógica de la aplicación y la comunicación con la base de datos. A continuación se muestra un ejemplo de un modelo en PHP:
<?php
class UserModel {
private $db;
public function __construct($db) {
$this->db = $db;
}
public function getUser($id) {
$statement = $this->db->prepare('SELECT * FROM users WHERE id = :id');
$statement->bindParam(':id', $id, PDO::PARAM_INT);
$statement->execute();
return $statement->fetch(PDO::FETCH_ASSOC);
}
}
?>
Vista (View)
La Vista se encarga de la presentación de los datos. Recibe la información del Modelo a través del Controlador y la muestra al usuario. Aquí hay un ejemplo de una vista simple en PHP:
<?php
function showUser($user) {
echo '<h1>' . $user['name'] . '</h1>';
echo '<p>Email: ' . $user['email'] . '</p>';
}
?>
Controlador (Controller)
El Controlador actúa como intermediario entre el Modelo y la Vista, manejando la lógica de la aplicación y las interacciones del usuario. A continuación se muestra un ejemplo de un controlador en PHP:
<?php
class UserController {
private $model;
private $view;
public function __construct($model, $view) {
$this->model = $model;
$this->view = $view;
}
public function show($id) {
$user = $this->model->getUser($id);
$this->view->showUser($user);
}
}
?>
Ejemplo práctico
A continuación se muestra cómo se junta todo en un ejemplo práctico:
<?php
// db connection
$db = new PDO('mysql:host=localhost;dbname=test', 'root', '');
// instantiate model, view and controller
$model = new UserModel($db);
$view = new class {
public function showUser($user) {
echo '<h1>' . $user['name'] . '</h1>';
echo '<p>Email: ' . $user['email'] . '</p>';
}
};
$controller = new UserController($model, $view);
// show user with id 1
$controller->show(1);
?>
Tabla comparativa de patrones
Patrón | Descripción | Ventajas | Desventajas |
---|---|---|---|
MVC | Modelo-Vista-Controlador | Separación de preocupaciones, facilidad de pruebas | Complejidad inicial |
MVVM | Modelo-Vista-VistaModelo | Mejora la separación de la lógica y la vista | No es adecuado para aplicaciones pequeñas |
MVP | Modelo-Vista-Presentador | Facilita la prueba unitaria de la vista | Aumento de la complejidad |