Resultado de imagen para php vista controlador
¿Te gustaría aprender PHP desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!

Si hay algo que nos gusta de la programación web es que podemos encontrar un sin fin de opciones para desarrollar nuestras aplicaciones web, lenguajes de programación tanto web como móviles y tomadas de la mano con sus APIs, frameworks y ciertas herramientas que nos agiliza el proceso de desarrollo, pero hay algo que no debemos descuidar al momento de desarrollar nuestras aplicaciones es el de tener buenas prácticas, por ejemplo si hablamos en concreto del lenguaje de programación PHP nos da bastante libertad y fácilmente podemos descuidar el desarrollo de nuestro código obteniendo así uno desordenado y muchas veces mal aplicado.

Para solventar este tipo de incidentes existen patrones de desarrollo que nos ayudan a mantener un código mejor estructurado, anteriormente hablamos de la programación orientada a objetos (POO) que en si es un paradigma que nos permite modularizar, clasificar nuestras aplicaciones y es de gran importancia ya que comprendiendo este paradigma podemos hablar de estos patrones, uno de ellos es el patrón Modelo vista controlador (MVC) y ahora quiero hablarte de ello.

El modelo vista controlador es un patrón de arquitectura de software que nos aporta separando los datos de nuestra aplicación de la lógica y de la interfaz de usuario obteniendo así tres componentes relacionados entre si. Si bien la POO nos ayuda a clasificar nuestra aplicación, el MVC nos ayudará a separarlo por componentes (que desde ahora le llamaremos capas porque me parece un concepto más adecuado).

¿En que consiste cada capa?

Modelo: Es todo lo referente a la gestión de la información y la interacción con los datos de nuestra aplicación (comúnmente bases de datos) este modelo realizará acceso a dicha información como también podrá realizar actualizaciones y depuraciones de los datos gestionados. Toda petición de acceso a la información siempre pasará por esta capa.

Controlador: Este es el puente entre la vista y el modelo ya que el usuario solicitará información mediante la vista y este pasará por el controlador para posteriormente realizar la petición al modelo, habitualmente es llamado la capa de lógica del negocio.

Vista: Esta capa nos mostrará la información formateada y ordenada, es el resultado de todo lo que el modelo interaccione con los datos,  este lo muestra mediante la interfaz de usuario, habitualmente llamado la capa de presentación.

En la actualidad lenguajes de programación con alto peso utilizan este patrón, cada una de estas llevadas de la mano con sus frameworks, tal es el caso de PHP con frameworks como Laravel, Zend, Symfony, CakePHP, CodeIgniter, Prado, Yii son solo algunos de los muchos ya existentes que trabajan con este patrón, desde luego cada uno de estos tiene su manera de trabajarlo pero en si la esencia y el concepto siempre será el mismo.

¿Pero como aplico todo esto con PHP?

Para que todo esto quede mas claro que mejor plasmarlo con un ejemplo, hemos aplicado  un ejemplo sobre un restaurante para así mostrar la forma en que trabaja la POO, lo propio haré para mostrarte como trabaja el patrón de desarrollo MVC.

Nos encontramos en un restaurante que tiene variedad de platillos, cuando un comensal ingresa este solicita el menú, entonces se realizará una solicitud de los platillos disponibles en el restaurante, esta solicitud se lo realiza mediante el controlador para que  este mismo realice una petición al modelo, como este modelo es el encargado de interactuar con los datos entonces realizará una consulta a la base de datos de los platillos disponibles en el restaurante, una vez obtenido el resultado este se lo devolverá al usuario mediante la vista. Vamos a reflejar todo esto en código PHP, para que tu puedas seguir el procedimiento te lo mostraré por pasos:

1) Crearemos una estructura de base de datos simple, esto con fines prácticos para demostrar correcta funcionalidad:

La base de datos lo llamaremos restaurante y contendrá cuatro campos, que indican el id, nombre del platillo, su precio y su disponibilidad, entonces cuando el valor del campo disponible esté en 1 significa que si esta disponible de lo contrario si el valor es de 0 no estará disponible, en este ejemplo el único platillo que no esta disponible es el de chuleta con patatas, eso quiere decir que cuando el usuario realice una petición de los platillos disponibles tendrá que reflejarnos 3 (mariscos, lazaña y milaneza).

2) Creamos nuestro primer archivo index.php el cual contendrá una interfaz sencilla de bienvenida:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8" />
    <title>Modelo-vista-controlador</title>
</head>
<body>
    <h1>Bienvenido al restaurant Chefcito</h1>
    <section>
        <a href="controlador.php">Solicite nuestro menú</a>
    </section>
</body>
</html>
 

Seguido de un titulo creamos un enlace para solicitar el menú del restaurante, si observas el enlace apunta a otro archivo llamado controlador.php

pantalla bienvenida restaurant

3) Creamos el archivo controlador.php, está demás explicar que este es el controlador de nuestra aplicación:

1
2
3
4
5
6
<?php
    require_once("modelo.php");
    $menu = new Platillo();
    $pd = $menu->lista_platillos();
    require_once("vista.php");
?>

Si te das cuenta este archivo contiene unicamente código PHP ya que este nunca será mostrado al usuario, trabajará internamente y como bien mencione anteriormente este será el puente entre la vista y el modelo, primeramente realizamos una llamada al archivo modelo.php para rescatar la información de la petición realizada, posteriormente creamos un objeto de la clase Platillo y realizamos una llamada al método lista_platillo para almacenarlo en una variable $pd y finalmente hacemos una llamada al archivo vista.php

4) Creamos el archivo modelo.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
class Platillo
{
    private $platillo;
    private $dbh;
    public function __construct()
    {
        $this->platillo = array();
        $this->dbh = new PDO('mysql:host=localhost;dbname=restaurante', "root", "");
    }
    private function set_names()
    {
        return $this->dbh->query("SET NAMES 'utf8'");
    }
    public function lista_platillos()
    {
        self::set_names();
        $sql="select nombre, precio from platillos where disponible = 1";
        foreach ($this->dbh->query($sql) as $res)
        {
            $this->platillo[]=$res;
        }
        return $this->platillo;
        $this->dbh=null;
    }
}
?>

Creamos una clase Platillo y dentro de la clase un constructor para inicializar los atributos ($platillo y $dbh) y también realizará la conexión a la base de datos mediante el objeto PDO (PHP Data Objects), posteriormente creamos dos métodos uno privado y el otro público, el primero únicamente realizará una consulta para evitar los problemas de tildes (SET NAMES ‘utf8’), el segundo método lista_platillos será la que recopile toda la información de platillos disponibles mediante una consulta a la base de datos.

5) Creamos el archivo vista.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8" />
    <title>Modelo-vista-controlador</title>
</head>
<body>
    <h1>Platillos disponibles</h1>
    <table border="1">
        <tr>
            <td><strong>Nombre platillo</strong></td>
            <td><strong>Precio platillo</strong></td>
        </tr>
        <?php
            for($i=0;$i<count($pd);$i++)
            {
                ?>
                    <tr>
                        <td><?php echo $pd[$i]["nombre"]; ?></td>
                        <td><?php echo $pd[$i]["precio"]; ?> USD.</td>
                    </tr>
                <?php
            }
        ?>
    </table>
</body>
</html>

Este archivo será mostrado al usuario con la información procesada y bien formateada, mediante un ciclo for mostramos tanto el nombre como el precio de los platillos disponibles, el resultado en pantalla será el siguiente:

Y esa es la forma como trabaja este patrón de desarrollo MVC, puedes ver en el ejemplo como mantenemos mas estructurado y ordenado nuestro código separando cada labor en distintas capas. Todo lo anterior explicado es una forma nativa de trabajar con este patrón pero entenderlo es dar un gran paso para poder comprender mucho mejor como funciona un framework PHP.

Consejo

Crea una estructura de directorios donde separes modelos de vistas y controladores para que de esa forma si tu aplicación crece sabrás donde se encuentra ubicado cada uno de los archivos. Si vas a utilizar funciones y estas serán llamadas continuamente por ejemplo una función que realice la conexión a la base de datos entonces crea una clase padre para que todos sus clases hijos hereden de ella, de esa forma optimizaras mas tu código.

Para finalizar nos queda decir que lo primordial para comprender mejor el MVC es bastante práctica, si queremos adentrarnos al mundo de los frameworks PHP saber esto es fundamental de tal forma que si en algún momento tengamos que afrontar un proyecto que no requiera de un framework trabajar con un MVC nativo es una buena opción.

Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría aprender PHP desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!
About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax