Aprende Symfony2 (Parte 1): Composer

30 de septiembre de 2014

¿No sabes nada del framework Symfony2, y te gustaría leer una guía rápida para aprender cómo utilizarlo, y cómo funciona? ¡Entonces este artículo es para ti!

No me malinterpretes, tarde o temprano tendrás que leer la documentación de Symfony, y deberás practicar mucho si quieres dominarlo. Pero por ahora esta guía debería ser un buen comienzo.

En el primer artículo de esta serie, conocerás Composer, que te ayudará con la instalación y actualización de librerías de terceros.

NOTA Esta serie de tutoriales explica Symfony empezando desde cero y creando todos los archivos a mano para aprender mejor su funcionamiento interno. En la práctica esto no es necesario y existen formas más sencillas de aprender a programar aplicaciones Symfony. Si eres completamente nuevo/a con Symfony, es mejor que leas primero la documentación de Symfony. Si ya conoces Symfony, estos tutoriales son un buen recurso para profundizar en su conocimiento.

Creando el proyecto

Para entender mejor cómo funciona Symfony2, no usaremos la distribución estándar de Symfony, sino que empezaremos desde cero con los archivos estrictamente necesarios.

Creemos nuestro proyecto:

$ mkdir knight
$ cd knight
$ git init

Instalando Composer

Cuando desarrollas un proyecto, lo último que quieres es perder el tiempo reinventando la rueda, así que normalmente utilizas librerías de terceros. Estas librerías tienen su propio ciclo de desarrollo: pueden reparar bugs y lanzar nuevas funcionalidades una vez las has instalado, así que necesitarás actualizarlas de vez en cuando.

Composer facilita esta labor de tal manera que nunca más tendrás que preocuparte por las nuevas versiones. Primero, descárgalo:

$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

¡Ya está! Si todos los proyectos fueran tan fáciles de instalar...

Instalando y actualizando Symfony2

En realidad, Symfony2 es sólo un nombre bajo el que se agrupan muchas librerías que podrían ser usadas individualmente (incluso puedes usarlas en otros frameworks, CMS o proyectos, como han hecho Drupal, phpBB, Laravel, eZ Publish, OroCRM o Piwik).

NOTA: Las librerías de Symfony2 se llaman componentes.

Composer se creó para instalar librerías, así que vamos a usarlo:

# instalamos todas las librerías de sf2
$ composer require 'symfony/symfony:~2.5'

Este comando realizará las siguientes tareas:

  1. Crear un archivo de configuración llamado composer.json si no existe ya
  2. Añadir symfony/symfony: ~2.5 a ese archivo (útil para futuros composer install)
  3. Descargar efectivamente Symfony en el directorio vendor/symfony/symfony
  4. Crear un archivo composer.lock

Más tarde, para actualizar estas dependencias, bastará con ejecutar composer update.

NOTA: Las librerías de las que depende tu proyecto se llaman dependencias.

El comando recorrerá el archivo composer.lock para saber qué versión ha sido instalada (p.e. 2.5.0) y comprobará si hay una versión más reciente disponible. Para más información sobre la manera en que Composer maneja las versiones, ver este artículo de Igor.

Esto significa que puedes ignorar el directorio vendor:

$ echo '/vendor/*' >> .gitignore

Si un miembro de tu equipo quiere instalar el proyecto, sólo necesitará clonar tu repositorio y ejecutar composer install, que realiza las siguientes tareas:

  1. Lee el archivo composer.json para recoger la lista de dependencias
  2. Lee el archivo composer.lock para comprobar la versión instalada por el commiter
  3. Descarga las dependencias con la versión especificada en el archivo lock (aunque haya una nueva versión disponible)

Si una dependencia aparece en el archivo composer.json pero no en el composer.lock, Composer descargará la versión coincidente más reciente que esté disponible y la añadirá al lock.

¡Esto significa que todo el mundo tendrá la misma versión instalada! Si sólo permites a una persona ejecutar composer update, está garantizado.

Autoloading

Gracias a que Composer sabe dónde está cada clase de cada librería instalada, ofrece una magnífica funcionalidad: autoloading o carga automática de clases.

Para resumir, cada vez que una clase es instanciada, Composer incluye automáticamente el archivo en el que fue declarada.

Tu propio código también puede beneficiarse de ello. Necesitas editar el archivo composer.json:

{
    "require": {
        "symfony/symfony": "~2.5"
    },
    "autoload": {
        "psr-4": {
            "": "src/"
        }
    }
}

Y ejecutar el siguiente comando para que se contemplen los cambios:

$ composer update

Esta configuración le dice a Composer que vamos a seguir el estándar PSR-4 y que vamos a poner nuestro código en el directorio src.

NOTA: PSR requiere que tu código siga algunas convenciones:

  • Crea una clase por cada archivo
  • Dale el mismo nombre a tu archivo y tu clase
  • Usa la ruta de la clase como namespace

Por ejemplo: el archivo src/AppBundle/Controller/DefaultController.php contiene una clase llamada DefaultController localizada en el namespace AppBundle\Controller.

No te preocupes demasiado por esto ahora.

Conclusión

Y esto es todo lo que necesitas saber sobre Composer por ahora. Hagamos un commit de nuestro trabajo:

$ git add -A
$ git commit -m 'Symfony2 instalado'

Espero que te haya servido, ¡permanece atento a los próximos artículos!

Sobre el autor

Este artículo fue publicado originalmente por Loïc Chardonnet y ha sido traducido con permiso por Manuel Gómez.

Artículos de la serie Aprende Symfony