Empezando en Symfony

No, no está mal escrito, y no tiene que ver con la música. Se trata de un poderoso framework  para facilitar la programación a los desarrolladores PHP.

Hace algún tiempo, estuvimos experimentando con Yii, otro de los frameworks mas espectaculares y punteros, pero…. como formador tengo que preparar continuamente cursos sobre distintos temas, y esta vez, he creído interesante hacer una primera aproximación  a Symfony. Espero que os interese.

Lo primero es preparar nuestra máquina para poder trabajar. En esta ocasión, vamos a utilizar un ordenador con windows 10, al que en su momento instalé XAMPP.

Aunque, lo que vamos a instalar, no será symfony, si no composer.

Composer es un gestor de dependencias para PHP; lo podríamos comparar en cierta medida con el procesador yum de Centos, o el apt-get de Ubuntu y Debian; solo en cierta medida ya que Composer solo instala/descarga las librerías necesarias en una carpeta dentro de un proyecto; no instala nada globalmente como hace yum o apt-get.Si queréis compararlo con algo, quizás se parezca mas a npm de Node

Instalación de Composer

En nuestro caso, que vamos a instalar Composer en una maquina windows, solo tenemos que descargarnos Composer-Setup.exe y ejecutarlo; esto hará que se descarguen los paquetes necesarios y que añada el path correcto para poder llamar a composer desde cualquier directorio.

Si tienes abierto una ventana de terminal, cierrala y vuelve a abrirla para que refresque los valores de Path

Ha sido sencillo….El día que queráis profundizar un poco mas en esta herramienta, que pienso que es muy interesante, podéis hacerlo a través de su web

https://getcomposer.org/

Empezando con Symfony

Hemos instalado Composer porque nos va a permitir crear proyectos Symfony con extrema facilidad, y…antes o después lo íbamos a necesitar….

Ahora, para crear nuestro primer proyecto, vamos a utilizar la linea de comando; mas adelante veremos como hacerlo desde Eclipse, pero…lo primero es lo primero. En mi caso, en mi disco D, tengo una carpeta Proyectos, debajo, para cada proyecto, una carpeta, en este caso RecursosFormacion, y por ultimo la carpeta para el proyecto web que será webSymfony. En resumen:

D:\Proyectos\RecursosFormacion\webSymfony

Para crear el esqueleto de proyecto web, podemos abrir una ventana DOS y escribir

composer create-project symfony/framework-standard-edition D:\Proyectos\RecursosFormacion\webSymfony

Este comando se conecta a Internet para descargar todas las librerías necesaria, y podemos quedarnos mirando como suceden las cosas. Al cabo de unos momentos, pedirá los datos de conexión para la base de datos con la que queráis trabajar

Symfony parametros base de datos

Si ya habéis creado la base de datos, podéis introducir la información; si no fuera así, no os preocupéis, esta información queda en un fichero y luego iremos a revisarla y modificarla

Tras unos momentos mas, termina la generación del proyecto.

Si quisierais utilizar otra versión del Framework, podríais indicarlo como segundo parámetro (después de los datos de vuestro proyecto), pero de momento, con que nos funcione tenemos bastante …no?

Y, aunque no os lo creáis, el proyecto ya funciona, podemos probarlo utilizando un servidor web que se ha instalado junto a Symfony, para ello os dirigis a la carpeta de proyecto

arrancando servidor weby allí ejecutamos

php bin/console server:run

y ya podemos abrir un navegador web y escribir como dirección:

http://localhost:8000

y veremos nuestra primera pagina Symfony

Symfony-primera página

Ahora, y antes de continuar, podríamos verificar que no hay ningún problema utilizando

http://localhost:8000/config.php

Symfony pantalla de chekingComo podéis ver, en mi caso, me indica unos puntos delicados y que debería corregir, una vez solucionados, tenéis al final de la página un enlace para repetir el check

Para la primera, y la tercera solo tengo que abrir el fichero php.ini, del que ademas, me ha indicado la ruta el final de la pagina, y realizar las modificaciones que me indica

Para la segunda, buscamos en el mismo php.ini una linea con

;extension=php_intl.dll

y le quitamos el ; y con eso activamos la extensión, para añadirla a nuestro proyecto. Nuestro siguiente paso, instalar las librerías necesarias

Vamos a la ventana de DOS, nos situamos en nuestra carpeta (D:\Proyectos\RecursosFormacion\webSymfony) y escribimos:

composer require symfony/intl

comprobamos….

Comprobando instalacion symfonyy, de momento, nos conformamos ya que en este momento, no hay una versión de apcu disponible para la versión de PHP que utilizo….

Estructura de ficheros

Quizas ahora es el momento de repasar la estructura de carpetas que nos ha creado composer:

  • app/ – configuración de la aplicación y lista de Bundles (bloque de aplicativo). Entre ellos la clase AppKernel que es el punto de entrada de la aplicación
  • bin/ – Ejecutables para distintas funcionalidades
  • src/ – En este directorio escribiremos todo nuestro código PHP
  • test/ – Carpeta para contener los programas para realización de tests unitarios
  • var/ – Ficheros generados internamente (Caches, logs,….)
  • vendor/ – Librerías necesarias de terceros
  • web/ – Carpeta raíz de la web, aquí deberemos dejar todos aquellos archivos que han de ser visible desde fuera, como hojas css, hojas html,  o ficheros que serán llamados desde el navegador del cliente directamente. Aqui solo debería haber contenido estático, hojas de estilo,  ficheros javascript, e imágenes

Entendiendo las “aplicaciones” o bundles

En una web, puede que tengamos apartados que tengan características lo suficientemente distintas como para que necesitemos dejarlos bastante independiente…vamos que comparten Base de datos, y poco mas.

Posiblemente el ejemplo mas claro seria la parte de la web dedicada a la gestión interna (mantenimiento de ficheros, gestión interna,…) y la parte visible, las páginas mas o menos publicas que han de utilizar los navegantes…

También hay casos que programamos partes para ser utilizadas posteriormente fuera de esa web, por ejemplo: un gestor de banners; pues bien, para eso vamos a utilizar las aplicaciones.

Para crear una aplicación nueva, deberemos ir a nuestra carpeta de proyecto, en mi caso webSymfony, y allí escribimos:

php bin/console generate:bundle --namespace=AppWebBundle --dir=src --format=annotation --no-interaction

Symfony:generando una aplicacion/bundleSi revisamos la linea de comando utilizada:

  • bin/console – Estamos ejecutando el fichero “console” que se encuentra en el directorio “bin” que se creó cuando ejecutamos “composer symfony……”
  • generate:bundle – Estamos utilizando una de las acciones de la que dispone este comando
  • –namespace=AppWebBundle – El nombre de la aplicación que vamos a crear (ha de terminar en “bundle”. Si estamos trabajando en aplicaciones para compartir, deberíamos garantizar que este nombre no lo utilizará otro desarrollador
  • –dir=src – Indicamos que deseamos que la aplicación se cree dentro de la carpeta src; para cada app, generara una subcarpeta con el nombre de la app
  • –format=annotation Indica el formato utilizado para generar los ficheros de configuración
  • –no-interaction – Queremos que utilice los parámetros indicados y no nos pregunta; si omitimos este parámetro, nos pedirá confirmación para cada uno de los valores que le hemos indicado, y los podríamos modificar, o incluso entrar.

Si ahora revisamos la carpeta src veremos

estructura src en SymfonyQue son cada una de las aplicaciones generadas, mas “AppBundle” que la genero por defecto, y que en muchos casos será la única que necesitemos

Para cada carpeta, nos ha creado la estructura para que podamos empezar a codificar

Symfony-estructura de una appMas adelante, iremos descubriendo que hacer con todo ello; de momento nos basta con saber que la modularidad que nos permite esta forma de trabajar hace sencillo el compartir módulos (o aplicaciones, mas bien) entre desarrollo, con el consiguiente ahorro de tiempo que significa

También descubriremos que durante esta generación, se ha modificado la clase con la que se arranca el sistema (AppKernel.php) en donde ha dejado registrado ya la existencia de este bundle, para que sea cargado cuando arranque el aplicativo

En el próximo articulo veremos como ajustar Eclipse para programar con Symfony.

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.

Esta entrada fue publicada en Formacion, PHP y MySQL/MariaDB, Symfony y etiquetada , , . Guarda el enlace permanente.

Deja un comentario