Primeros pasos con Composer y explicación de su funcionamiento

Todo el mundo habla de composer y ahora las dependencias de los proyectos de PHP son gestionados por este, valga la redundancia, gestor.

En este post explicaré por qué usar composer, cómo usarlo, instalarlo y cómo funciona a grandes rasgos.

Cómo instalar Composer para gestionar dependencias de PHP

Ya he escrito un tutorial anteriormente, míralo aquí.

¿Por qué usar composer?

Todo proyecto de PHP, en algún momento, llega a necesitar dependencias. Por ejemplo, una librería que te facilita las cosas.

Es ahí cuando las dependencias entran en juego. Normalmente tú dirás “No pasa nada, descargo las clases y archivos de la librería y listo”; tendrás razón pero ahora veamos las desventajas:

  • Si quieres actualizar la librería (qué tal si se encontró una vulnerabilidad) tienes que eliminarla, descargar la nueva y adaptarla
  • En caso de que le pases tu proyecto a un amigo o lo publiques en internet, las demás personas tendrán que descargar manualmente las librerías
  • Dentro del código tienes que hacer miles de includes o requires para tener todos los paquetes
  • Por si olvidas una dependencia, nadie estará ahí para recordártelo

Es por ello que composer viene a solucionar esos problemas, aparte de que proporciona un entorno en donde todos pueden publicar librerías.

Cómo usar composer en PHP

El uso es fácil, una vez que ya tengas composer instalado puedes comenzar un proyecto con:

composer init

Ello creará un composer.json que es en donde está la lista de dependencias y otras cosas, así como una carpeta llamada vendor que será en donde pondrá tus dependencias.

Normalmente los programadores que publican su librería te dan una pista de cómo instalar la dependencia. Por ejemplo, para instalar libmergepdf es:

composer require iio/libmergepdf:^4.0

Lo único que tienes que hacer es ejecutarlo. O sea que la sintaxis es:

composer require autor/librería

Pero a veces, si necesitas una versión específica se puede poner con los dos puntos. En este caso ^:4.0 significa superior a la versión 4.

Las dependencias y las dependencias de desarrollo

Hay algunas dependencias (dependencies) que son usadas por tu proyecto y otras llamadas dev-dependencies que usas durante el desarrollo pero que no están disponibles a la hora de publicar o sacar tu proyecto; o sea, solamente las usas tú como programador.

Usar composer en PHP

Bueno, ya vimos cómo funciona y todo eso pero no hemos visto código. Como lo dije, composer genera una carpeta vendor y dentro de ella un autoload.php.

Lo que tienes que hacer es incluir el autoload en donde quieras usar las librerías o clases, y listo.

Por ejemplo, tengo un proyecto vacío pero con unas librerías y se ve así:

Proyecto de composer recién creado

Proyecto de composer recién creado

Dentro de mi proyecto voy a crear un archivo index.php (podría tener otro nombre) y requiero el autoload.php así:

Eso es lo único necesario, de ahí ya puedo usar todas las clases, librerías y paquetes con el simple hecho de requerir el autoload. Su nombre lo dice: es autoload, es decir, autocarga las librerías y paquetes.

Si en el futuro se agregan más librerías, serán cargadas de manera automática.

Actualizar librerías

Si crees que es hora de actualizar tus librerías o estás obligado a hacerlo, hazlo con:

composer update

Instalar librerías con composer

Si alguien te pasó su proyecto que ya tiene composer.json entonces tienes que instalar las librerías. Por ello es que debes ejecutar:

composer install

Eso leerá el composer.json e instalará la última versión de las librerías. ¿Fabuloso, no?

¿Cómo funciona composer a grandes rasgos?

No soy experto ni he mirado el código del gestor, pero así funciona:

  • Lee el archivo composer.json
  • Si no lo encuentra, indica error y termina
  • Instala las dependencias en la carpeta vendor. Por cada una descarga el código del repositorio oficial, y lo pone en tu vendor
  • Genera un archivo composer.lock que indica la última vez que instalaste o actualizaste librerías, así, en caso de error o de que algo falle, se vuelve a esa versión
  • Pone dentro del autoload el código que carga a otro autoload que a su vez requiere los paquetes

Eso fue a grandes rasgos, pero obviamente el gestor es muchísimo más que eso.

Cargar nuestro código

A veces necesitamos cargar más código además del que tienen las librerías, si ese es tu caso entonces mira cómo cargar tus propias clases con Composer en este post.

Primeros pasos con Composer y explicación de su funcionamiento

Por parzibyte Tiempo de lectura: 3 min
3