3-mvc

 

Archivo 1: controller.php

php
class MyController{
    public function plantilla(){
        include "views/template.php";
    }
}

Archivo 2: index.php

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)

html
<!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

text
proyecto_mvc/
├── index.php              # Punto de entrada
├── controllers/           # Controladores
│   └── controller.php
├── models/               # Modelos
│   └── (archivos .php)
└── views/                # Vistas
    └── template.php

Paso 1: Configurar el Controlador Principal

controllers/MvcController.php:

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
<?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:

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>&copy; <?php echo date('Y'); ?> Mi Aplicación MVC</p>
    </footer>
</body>
</html>

Paso 4: Crear Vistas para cada Sección

views/modulos/inicio.php:

php
<h1>PÁGINA DE INICIO</h1>
<p>Bienvenido al sistema MVC básico.</p>

views/modulos/nosotros.php:

php
<h1>SOBRE NOSOTROS</h1>
<p>Información sobre nuestra empresa.</p>

Paso 5: Configurar el Index Principal

index.php:

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

  1. Usuario accede aindex.php

  2. index.php crea instancia de MvcController

  3. Controlador llama a plantilla() que incluye template.php

  4. template.php a su vez llama a enlacesPaginasController()

  5. Controlador consulta el Modelo (EnlacesPaginas)

  6. Modelo determina qué vista cargar según el parámetro action

  7. Se 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

  1. Router más avanzado: Para manejar URLs amigables

  2. Base de datos: Integrar un modelo para conexión a DB

  3. Sistema de plantillas: Usar un motor de plantillas como Twig

  4. Autocarga de clases: Implementar autoloading con PSR-4

  5. 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

Entradas más populares de este blog

token

¿Qué es un token y cómo se utiliza en una API?

Generación de Credenciales API