Composer es una herramienta para manejar dependencias de PHP. Su uso nos permite declarar las librerías de las que depende nuestro proyecto y ella se encarga de administrarlas (las instala, las actualiza…).
Empezando a usar composer
Para empezar a usar Composer en el proyecto, lo primero que tenemos que hacer es crear el archivo composer.json en la carpeta raíz de nuestro proyecto. En este fichero vamos a especificar las dependencias de nuestro proyecto.
Lo primero que tiene que contener este fichero es la llave “require”. Con esto lo que le decimos a composer es de qué paquetes depende nuestro proyecto. El formato sería:
{
"require": {
"vendor/paquete": "1.3.2",
"vendor/paquete2": "1.*",
"vendor/paquete3": "^2.0.3"
}
}
Vamos a poner como ejemplo que necesitamos usar la dependencia monolog/monolog, que es una librería de loggin. En este caso lo que tendríamos que incluir es:
{
"require": {
"monolog/monolog": "1.0.*"
}
}
Esto lo que le indica es que nuestro proyecto necesita el paquete monolog/monolog cuya versión tiene que ser mayor que 1.0 pero menor que 1.1.
Una vez tenemos listo esto vamos a instalar los paquetes necesarios con el siguiente comando:
composer install
Al lanzar este comando se nos va a generar el fichero composer.lock. En este fichero se incluye, entre otras cosas, la versión exacta que se está instalando. Si no existe el fichero se resolverán las dependencias usando la información que proporcionamos en el fichero composer.json y se descargarán las últimas versiones en el directorio vendor (este directorio es la localización habitual para el código de terceros en nuestro proyecto) y al terminar fijará esas versiones para el proyecto. Si estamos trabajando con un repositorio es importante hacer un commit de este archivo al repositorio para que la gente que trabaja en el mismo proyecto lo haga con las mismas versiones.
Si al lanzar el comando ya tenemos el fichero composer.lock (ya sea porque lanzamos el comando install con anterioridad o porque trabajamos en un proyecto común y alguien del mismo ya lo lanzó con anterioridad) Composer resuelve e instala las dependencias que tengamos listadas en composer.json pero usando las versiones exactas que tenemos en composer.lock. Esto asegura la consistencia del proyecto ya que todo el mundo estará trabajando con las mismas versiones aunque exista actualmente alguna versión superior.
Actualizar las dependencias a las últimas versiones disponibles
Como hemos visto anteriormente, el fichero composer.lock evita que automáticamente se actualicen las dependencias a versiones más actuales. Para hacer eso vamos a usar el comando update. Esto va a buscar las últimas versiones disponibles de acuerdo con lo que le indicamos en el fichero composer.json.
composer update
Esto actualiza todas las dependencias. En caso de que solo queramos actualizar alguna dependencia se podría indicar. Vamos a actualizar como ejemplo solamente monolog.
composer update monolog/monolog
Autoloading
Si la librería proporciona información acerca de la carga automática de sus clases Composer generará un archivo llamado autoload.php en la carpeta vendor. Incluyendo este archivo en el proyecto ya podremos utilizar cualquier clase instalada a través de Composer sin tener que incluirla explícitamente en nuestro código:
require_once __DIR__ . '/vendor/autoload.php';
Añadir nuevas dependencias
Para añadir nuevas dependencias vamos a usar la siguiente opción:
composer require vendor/package:version
Generar el fichero composer.json de manera automática
Si queremos generar el fichero composer.json a mano y que nos lo cree el propio sistema añadiendo información a mayores, podemos usar el comando init para realizar esto.
composer init
Nos va a realizar una serie de preguntas para cada una de las cuales nos hace sugerencias. Podemos aceptar las sugerencias que nos hace dando a enter o bien escribir la información que queramos. Asimismo, podremos añadir ahora las dependencias o posteriormente con los comandos que explicamos.
Antes de finalizar nos mostrará cómo quedaría el fichero composer.json para que aceptemos si estamos de acuerdo o lo cancelemos en caso de que no estemos conformes con el resultado.
Buscar información de dependencias
Existen varios repositorios donde puedes encontrar información sobre los paquetes instalables con composer. Uno de los más conocidos y que es muy interesante conocer es packagist. Puedes encontrarlo en el siguiente enlace: