Comparte en Facebook Twitter Google+

symfony-instalacion-y-fundamentos

Symfony, además de ser un framework para el desarrollo de aplicaciones web en PHP, es un conjunto de componentes atómicos y reutilizables escritos en PHP, es por esto que muchos proyectos, incluso otros frameworks de PHP como Laravel, usan los componentes de Symfony en sus estructuras internas, de hecho, Symfony maneja distribuciones, debido a la atomicidad y alta flexibilidad de sus componentes.

Estas distribuciones buscan emular a las distribuciones de Linux, por ejemplo la versión estándar del framework que es solo una de las distribuciones disponibles de Symfony, es básicamente un grupo de componentes de Symfony configurados para satisfacer las necesidades de dicha distribución, imaginemos que cada distribución de Symfony es una herramienta construida con pequeñas piezas, como una casa de lego, por dar un ejemplo. Pero hoy vamos a realizar la instalación sencilla, vamos a instalar la nueva aplicación demo , esta nos servirá para explicar los principios básicos del desarrollo de una aplicación en Symfony, además esta app demo cumple con todas las convenciones de las mejores prácticas del framework.

Primero, descargaremos el instalador de Symfony, también podemos realizar nuestra instalación mediante composer o git, de hecho hasta hace poco ésta era la manera estándar de hacerlo, pero la comunidad ha apoyado aún más el uso del instalador y no he visto ninguna queja al respecto, en pocas palabras, funciona bien.

Ve a tu consola y ejecuta los siguientes comandos para descargar el instalador de Symfony y darle permisos de escritura.

Luego de tener el instalador listo para trabajar, procedemos a instalar nuestro proyecto, preferiblemente en nuestro directorio home para evitar problemas de permisología por los momentos, ya que solo vamos a usar la app demo para explicar como trabaja el framework, ya en las próximas entregas hablaremos sobre cómo montar un entorno de desarrollo profesional en Symfony.

Si no han trabajado anteriormente con Symfony, seguramente el instalador les dará la alerta de configurar la opción date.timezone en su php.ini, si no saben donde encontrar el archivo, este comando de la consola les va a ser de mucha utilidad:

Todos los archivos de configuración en Linux se encuentran en el directorio /etc, así que cuando no sepan donde encontrar un archivo de configuración solo usen este comando y cambien el nombre del archivo por el que estén buscando ustedes.

Muy bien, a continuación nos dirigiremos a la carpeta del proyecto que creó el instalador de Symfony:

Ahora levantaremos la app demo con el siguiente comando

Ya con esto nuestra app demo debería estar funcionando en nuestro servidor local, y si todo salió bien, deberíamos poder ver una imagen como la siguiente, si accedemos a http://localhost:8000 en nuestro navegador:

imagen-home-demo-symfony

Listo ya tienes instalado y corriendo un aplicación completa desarrollada en Symfony, este proyecto tiene como finalidad servir de guía para el aprendizaje, sin embargo si de verdad queremos entender el por qué de cada componente, o por qué en Symfony todo pareciera ser un poco mas complejo, te pido que me acompañes a explorar el framework para que comprendas la filosofía que está detrás del desarrollo su desarrollo.

Quiero que veamos cómo funciona el controlador frontal de Symfony, para el entorno de producción.

Fijémonos en las líneas 9 y 10 donde el controlador frontal de nuestra aplicación demo está importando dos clases de distintos componentes. Concentrémonos por el momento en la clase Request, en la línea 43, la clase Request del componente HttpFoundation, nos parsea la petición desde los globales de php $_GET, $_POST, $_COOKIE, $_FILES. ¿Cómo se esto? Bueno, el método de la clase nos lo está diciendo: createFromGlobals, pero igual puedes revisar el código fuente de la clase Request para que lo compruebes por ti mismo.

En la línea 44, el kernel de Symfony genera la respuesta a la petición, y esta respuesta la enviamos al navegador del cliente en la línea 45, por último en la línea 30, Symfony dispara el evento terminate, este evento nos permite ejecutar tareas luego de que la aplicación haya despachado la respuesta al usuario. Vamos a ilustrar esto con un ejemplo:

imagen-web-diagrams

Fíjate cómo Symfony envía la página de bienvenida primero, y luego envía el email de confirmación, acelerando así el tiempo de carga de la página o aplicación.

La estructura del controlador frontal de producción de Symfony nos demuestra el concepto principal y la filosofía de todos los componentes sus componentes. La clase Request del componente HttpFoundation se encargó de preprocesar los globales de la petición al servidor, para luego ser manejados por el kernel, que utilizando los distintos componentes necesarios genera una respuesta, esto se reduce básicamente a una tarea por clase. Veamos a continuación el código fuente fuente del controlador frontal de desarrollo de Symfony, el archivo app_dev.php en el directorio web.

En Symfony se manejan los ambientes de desarrollo y producción, si ya has trabajado con algún framework ya sea en PHP, Java, Ruby, etc. seguro sabes de lo que estamos hablando, sino más adelante tocaremos este tema, por el momento cito al código de este archivo para que notes que en la línea 10 ahora estamos cargando a la clase Debug del componente Debug de Symfony, y en la línea 29 lo habilitamos para que nos ayude con las tareas de depuración en el ambiente de desarrollo.

Estos archivos son ejemplos ideales para que entiendas la filosofía de Symfony, todo busca ser lo más atómico posible, Symfony no es un framework monolítico con estructuras fuertemente acopladas y dependientes unas de otras, sino componentes atómicos e independientes configurados a la medida. Por el momento lo dejaremos hasta aquí y en la próxima entrega les estaré explicando la estructura de directorios de Symfony, y además utilizaremos el código fuente de la app demo.

Regístrate hoy en Styde y continua mejorando tus habilidades: ver planes.

Lección siguiente Introducción a Symfony II, Estructura de directorios