3-mvc
Archivo 1: controller.php
class MyController{
public function plantilla(){
include "views/template.php";
}
}Archivo 2: index.php
<?php
# EL INDEX: En él mostraremos la salida de las vistas
# desde él enviaremos las distintas acciones que el usuario envíe
$mvc = new MvcControlLer();
$mvc -> plantilla();
?>Archivo 3: template.php (parcial)
<!DOCTYPE html>
<html>
<body>
<header>
<h1>LOGOTIPO</h1>
</header>
<nav>
<ul>
<li><a href="">Inicio</a></li>
<li><a href="">Nosotros</a></li>
<li><a href="">Servicios</a></li>
<li><a href="">Contáctenos</a></li>
</ul>
</nav>
<section>
<h1>PÁGINA DE INICIO</h1>
</section>
</body>
</html>Tutorial MVC (Modelo-Vista-Controlador) Básico en PHP
¿Qué es MVC?
MVC es un patrón de diseño que separa la aplicación en tres componentes:
Modelo: Maneja la lógica de negocio y datos
Vista: Presenta la información al usuario
Controlador: Recibe las peticiones y coordina Modelo y Vista
Estructura del Proyecto
proyecto_mvc/
├── index.php # Punto de entrada
├── controllers/ # Controladores
│ └── controller.php
├── models/ # Modelos
│ └── (archivos .php)
└── views/ # Vistas
└── template.phpPaso 1: Configurar el Controlador Principal
controllers/MvcController.php:
<?php
class MvcController {
public function plantilla() {
// Incluye la vista principal
include "views/template.php";
}
public function enlacesPaginasController() {
// Controlador para manejar enlaces
if(isset($_GET['action'])) {
$enlaces = $_GET['action'];
} else {
$enlaces = "index";
}
// Respuesta del modelo de enlaces
$respuesta = EnlacesPaginas::enlacesPaginasModel($enlaces);
// Incluye la vista correspondiente
include $respuesta;
}
}
?>Paso 2: Crear el Modelo de Enlaces
models/enlaces.php:
<?php
class EnlacesPaginas {
public static function enlacesPaginasModel($enlaces) {
$modulo = "";
if($enlaces == "inicio" ||
$enlaces == "nosotros" ||
$enlaces == "servicios" ||
$enlaces == "contactenos") {
$modulo = "views/modulos/" . $enlaces . ".php";
} else if($enlaces == "index") {
$modulo = "views/template.php";
}
return $modulo;
}
}
?>Paso 3: Mejorar la Vista Principal
views/template.php:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sistema MVC</title>
</head>
<body>
<header>
<h1>LOGOTIPO</h1>
</header>
<nav>
<ul>
<li><a href="index.php?action=inicio">Inicio</a></li>
<li><a href="index.php?action=nosotros">Nosotros</a></li>
<li><a href="index.php?action=servicios">Servicios</a></li>
<li><a href="index.php?action=contactenos">Contáctenos</a></li>
</ul>
</nav>
<section>
<?php
// Aquí se cargará el contenido dinámico
$mvc = new MvcController();
$mvc->enlacesPaginasController();
?>
</section>
<footer>
<p>© <?php echo date('Y'); ?> Mi Aplicación MVC</p>
</footer>
</body>
</html>Paso 4: Crear Vistas para cada Sección
views/modulos/inicio.php:
<h1>PÁGINA DE INICIO</h1>
<p>Bienvenido al sistema MVC básico.</p>views/modulos/nosotros.php:
<h1>SOBRE NOSOTROS</h1>
<p>Información sobre nuestra empresa.</p>Paso 5: Configurar el Index Principal
index.php:
<?php
// Incluir controlador principal
require_once "controllers/MvcController.php";
// Incluir modelo de enlaces
require_once "models/enlaces.php";
// Crear instancia del controlador
$mvc = new MvcController();
// Llamar al método plantilla que cargará la vista principal
$mvc->plantilla();
?>Cómo Funciona el Flujo MVC
Usuario accede a:
index.phpindex.php crea instancia de
MvcControllerControlador llama a
plantilla()que incluyetemplate.phptemplate.php a su vez llama a
enlacesPaginasController()Controlador consulta el Modelo (
EnlacesPaginas)Modelo determina qué vista cargar según el parámetro
actionSe incluye la Vista correspondiente en la sección dinámica
Ventajas de MVC
Separación de preocupaciones: Cada componente tiene una responsabilidad clara
Reutilización de código: Las vistas y modelos pueden reutilizarse
Mantenibilidad: Es más fácil hacer cambios sin afectar otras partes
Trabajo en equipo: Diferentes desarrolladores pueden trabajar simultáneamente
Mejoras Posibles
Router más avanzado: Para manejar URLs amigables
Base de datos: Integrar un modelo para conexión a DB
Sistema de plantillas: Usar un motor de plantillas como Twig
Autocarga de clases: Implementar autoloading con PSR-4
Control de errores: Manejo de errores y excepciones
Este es un ejemplo básico de MVC. En aplicaciones reales, normalmente se usaría un framework como Laravel, Symfony o CodeIgniter que implementa MVC de manera más robusta.
Comentarios
Publicar un comentario