13-Aplicando el Patrón MVC – Parte 1: Estructura y Primeras Vistas

 Aplicando el Patrón MVC – Parte 1: Estructura y Primeras Vistas

En este tutorial, comenzaremos a construir una pequeña aplicación web utilizando el patrón de diseño Modelo-Vista-Controlador (MVC) . Nuestro objetivo inicial será organizar el proyecto y lograr que el usuario vea una página HTML (la vista) a través de un controlador, todo gestionado por un archivo central (index.php).

Paso 1: Creando la Estructura de Carpetas

Lo primero es organizar nuestro proyecto. MVC se basa en la separación de responsabilidades, por lo que crearemos una carpeta principal y, dentro de ella, tres subcarpetas para cada capa.

  1. Crea una carpeta principal para tu proyecto. En este ejemplo, la llamaremos 0.8 MVC .

  2. Dentro de 0.8 MVC, crea las siguientes subcarpetas:

    • controllers: Aquí vivirán los archivos que manejan las peticiones del usuario y la lógica de la aplicación.

    • models: (Aunque no lo usaremos en esta parte) Aquí residirá la lógica de negocio y la interacción con la base de datos.

    • views: Aquí guardaremos las plantillas y archivos que construyen la interfaz de usuario (lo que el usuario ve).

La estructura de tu proyecto debería verse así:

text
0.8 MVC/
├── controllers/
├── models/
└── views/

Paso 2: El Punto de Entrada (index.php)

Todo proyecto web tiene un punto de entrada único, el archivo que se carga cuando un usuario escribe nuestra URL. Este archivo se llama comúnmente index.php y estará ubicado en la raíz de nuestro proyecto, es decir, fuera de las tres carpetas que acabamos de crear.

0.8 MVC/index.php

Este archivo será muy sencillo. Su misión es:

  1. Incluir el archivo del controlador principal.

  2. Crear un objeto de ese controlador.

  3. Ejecutar un método de ese controlador que se encargará de mostrar la página.

php
<?php

# EL INDEX: En él mostraremos la salida de las vistas al usuario
# y a través de él enviaremos las distintas acciones que el usuario envíe.

require_once "controllers/controller.php";

$mvc = new MvcController();
$mvc -> plantilla();

?>

Paso 3: Creando la Vista Principal (template.php)

Ahora, pasemos a la capa de las Vistas. Necesitamos una plantilla base que contenga la estructura HTML que el usuario verá. Dentro de la carpeta views, crearemos un archivo llamado template.php.

0.8 MVC/views/template.php

Aquí colocaremos nuestro código HTML. Por ahora, será algo muy simple: un encabezado, un menú de navegación y una sección de contenido.

html
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Mi Sitio MVC</title>
</head>
<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>

Paso 4: El Controlador que Orquesta (controller.php)

Necesitamos un "director de orquesta" que conecte la petición del index.php con la vista template.php. Para eso, crearemos nuestro primer controlador dentro de la carpeta controllers.

0.8 MVC/controllers/controller.php

Este archivo contendrá una clase PHP con un método específico para llamar a la plantilla.

php
<?php

class MvcController{

    public function plantilla(){
        // La función 'include' incorpora y ejecuta el archivo especificado.
        // Aquí le decimos que incluya el archivo template.php de la carpeta views.
        include "views/template.php";
    }

}

?>

Paso 5: El Flujo de la Aplicación

Ahora que tenemos todos los archivos, veamos cómo funciona el flujo cuando un usuario accede a nuestro sitio:

  1. El usuario escribe la URL y el servidor web ejecuta el archivo index.php.

  2. El index.php carga el controlador (controllers/controller.php) usando require_once.

  3. Se crea un objeto de la clase MvcController y se llama a su método plantilla().

  4. El método plantilla() ejecuta include "views/template.php".

  5. include lee y ejecuta el contenido de template.php, que es nuestro código HTML.

  6. El navegador del usuario recibe el HTML resultante y lo muestra.

La Magia del include vs. echo

Un detalle crucial aquí es el uso de include. Si en nuestro controlador, en lugar de include, hubiéramos usado echo de la siguiente manera:

php
// Código INCORRECTO para este caso
public function plantilla(){
    echo "views/template.php";
}

Al actualizar nuestra página, el navegador no mostraría el HTML con el logotipo, el menú y el contenido. Simplemente mostraría el texto literal: views/template.php.

include le dice a PHP: "Toma el contenido de este archivo e insértalo aquí como si fuera parte del código". Por eso funciona para incluir plantillas HTML.

echo (o print) le dice a PHP: "Toma este texto y envíalo al navegador".

Comprobando el Resultado

Si has seguido todos los pasos, al abrir tu navegador y acceder a la carpeta 0.8 MVC (a través de un servidor local como XAMPP, WAMP o similar), verás tu página con el logotipo, el menú y el texto "PÁGINA DE INICIO".

Lo más interesante ocurre si inspeccionas el código fuente de la página en tu navegador (clic derecho -> "Ver código fuente" o "Inspeccionar"). Verás únicamente el código HTML limpio de template.php. ¡No verás ni una sola línea de PHP! Esto es porque el PHP se ejecutó en el servidor y lo único que se envió al navegador fue el resultado final (HTML).

Conclusión

Hemos dado el primer paso para implementar el patrón MVC. Hemos separado la lógica de presentación (la vista template.php) de la lógica de control (el controlador controller.php) y establecimos un punto de entrada único (index.php). En la Parte 2, empezaremos a integrar los Modelos para manejar datos dinámicos y a crear diferentes vistas que nuestro controlador pueda gestionar.

Comentarios

Entradas más populares de este blog

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

token

Generación de Credenciales API