Construye una micro-app MVC con Symfony

Hoy aplicaremos algunas mejoras a la agenda PHP basada en archivos CSV que comenzamos a desarrollar en el curso de programación PHP guay. En el último de los tres vídeos que explican cómo programar la aplicación proponíamos a los alumnos apuntados al curso que mejoraran la seguridad y la escalabilidad de la app poniendo un Front Controller.

Symfony

Recapitulemos un poco…

Si recién has aterrizado en este post vía Google, te recuerdo que en el curso de programación PHP guay hemos programado una agenda CSV en estas tres entregas (incluyen video):

  1. ¡Aprende a programar 1 agenda CSV con PHP!
  2. Continuamos programando 1 agenda CSV con PHP
  3. Felicidades, ¡ya terminamos la programación de nuestra agenda CSV con PHP!

Sobre los frameworks de desarrollo

Al poco tiempo de proponer la mejora nos dimos cuenta de que el nivel técnico de la misma era alto para la mayoría de personas apuntadas en PHP guay. Si este es tu caso, ¡no te agobies! Quizás nos hemos pasado un poco.

Si tu nivel de PHP es básico o intermedio no hace falta que entiendas exactamente todo lo que explicaremos hoy. Entender bien todo esto requiere tiempo de estudio y práctica. Sin embargo, si lo lees por encima, este ejercicio te puede servir para acercarte al mundo de los frameworks PHP desde una perspectiva generalista.

¿Sabías que a medio y largo plazo los desarrolladores profesionales terminan trabajando con frameworks? Te recomiendo que eches un vistazo a este videotutorial donde explico qué es un framework.

De una agenda PHP a un micro-framework PHP

Vamos a ensamblar nuestra agenda PHP en un micro-framework construido con algunos componentes de Symfony. Por si no lo sabes, Symfony es un framework PHP formado por componentes desacoplados y autónomos, así que llegado el caso siempre puedes tomar un componente Symfony y ponerlo en tu aplicación web para solucionar un problema concreto.

Lo primero que tenemos que hacer es poner el Front Controller. Por cierto, puedes consultar la solución Front Controller de nuestra agenda PHP en este post que publiqué en El Baúl del Programador. Como puedes ver, poner el front controller implica que primero debemos crear la carpeta public y luego tenemos que poner dentro el archivo index.php.

Implementación de Front Controller

Figura 1. Carpeta public y archivo index.php (clica en la imagen para hacerla más grande)

En resumen…

  • La carpeta public es la única accesible por los usuarios de Internet.
  • index.php es el front controller.
  • El servidor web canaliza todas las peticiones HTTP hacia index.php.
  • Con esto ganamos en seguridad (ahora solo hay 1 punto de acceso) y en escalabilidad (ahora podemos tomar la lógica de inicialización que está esparcida en varios archivos y la podemos poner en 1 solo sitio).

Nuestra micro-app MVC basada en Symfony utiliza estos componentes:

  • HttpFoundation es una capa OO para trabajar con HTTP.
  • HttpKernel es el núcleo del micro-framework. Permite atender una petición HTTP y devolver una respuesta pertinente por medio del despachador de eventos.
  • Routing asocia una petición HTTP a una acción determinada.

¡No dejes de clicar en los enlaces de los componentes de arriba para acceder a la documentación oficial y ver cómo funcionan!

Código de index.php

Tras inicializar los componentes Symfony necesarios, ya podemos desplazar a index.php la lógica CRUD de la agenda PHP original:

De este modo, los archivos CRUD se convierten en vistas MVC, por así decir, con solo código HTML y lógica PHP liviana; por ejemplo, sentencias condicionales, bucles, etc., pero nunca con lógica de negocio.

Ejemplo, archivo add.php:

Conclusión

En general, las aplicaciones de tamaño pequeño no necesitan construirse con toda la potencia de un framework de desarrollo. En estos casos, el desarrollador es el responsable de aplicar las ideas de análisis y los patrones de diseño que garanticen la calidad de dicha aplicación.

¡Pero ya no hay excusa! En la actualidad hay muchas facilidades para desarrollar con garantías de éxito aplicaciones MVC ligeras. Con la llegada de los micro-frameworks como Slim, o gracias a los componentes modulares de Symfony HttpKernel, HttpFoundation y Routing ya puedes aplicar buenas prácticas de programación y patrones de diseño de software desde el principio.

En esta entrada hemos tomado la agenda que desarrollamos en el curso PHP guay y la hemos ensamblado con tres componentes de Symfony hasta transformarla en una micro aplicación MVC. Esto ha sido posible porque cuando comenzamos a programar nuestra agenda PHP lo hicimos aplicando desde el principio algunas ideas de análisis y patrones de diseño.

0 comentarios

¿Me dejas un comentario? ¡Gracias!

Deja un comentario

Los campos obligatorios están marcados con *