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
include
s orequire
s 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í:

Dentro de mi proyecto voy a crear un archivo index.php (podría tener otro nombre) y requiero el autoload.php así:
<?php
require_once "vendor/autoload.php";
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.
Pingback: Crear archivo de Excel con PHP y PHPSpreadsheet - Parzibyte's blog
Pingback: Crear Google sitemap (Mapa del sitio) XML con PHP y Sitemap.php - Parzibyte's blog
Pingback: Configurar, descargar e instalar composer (gestor de dependencias) - Parzibyte's blog