> Manuales > Tutorial de Composer

En este artículo te ofrecemos todas las claves para usar Composer, el gestor de dependencias de PHP. Declarar dependencias, instalarlas en un proyecto o actualizarlas.

En el Manual de Composer hemos podido tratar ya varios asuntos relacionados con Composer, el popular gestor de dependencias que todos los desarrolladores de PHP deberíamos usar para mejorar nuestro flujo de trabajo.

A estas alturas ya lo debemos tener instalado y aclarados algunos conceptos importantes cuando queremos trabajar con Composer. Ahora vamos a ver cómo declarar una serie de dependencias y cómo instalarlas en nuestro proyecto a través de la línea de comandos con Composer. También veremos cómo actualizar nuestras dependencias una vez se haya iniciado el proyecto.

Colocar nuestro archivo composer.json

Ya lo explicamos en el primer artículo de este manual sobre Composer, pero lo volvemos a mencionar. Para declarar las dependencias debes indicarlas en un archivo en notación de objeto Javascript (JSON). Ese archivo debes colocarlo en la carpeta raíz de tu proyecto y su nombre debe de ser composer.json.

El archivo JSON sirve para indicar algunos datos sobre nuestro proyecto, así como las dependencias que tiene con otros paquetes de los que te encuentras en Packagist.

Para que sirva de muestra, veamos a continuación el contenido de un archivo de ejemplo composer.json.

{
   "name": "desarrolloweb/probando-composer",
   "require": {
       "phpmailer/phpmailer": "5.2.*",
       "raveren/kint": "0.9.*@dev"
   }
}

En este archivo estamos indicando que nuestro proyecto se llama "desarrolloweb/probando-composer". Siempre se utilizan dos nombres, uno el nick de la empresa o creadores y otro el nombre del proyecto en sí. Luego con el campo require estamos indicando que vamos a usar dos librerías, por un lado el phpmailer de phpmailer y el kint de ravener.

Además, observarás que cada paquete tiene una versión requerida. Por ejemplo en phpmailer declaramos como versión "5.2.*". Eso quiere decir que te instale siempre la versión 5.2.x (la más reciente de la 5.2). Pero podrías haber declarado "5.*". Existen varios operadores para especificar la versión. Lo mejor es que revises la documentación de Composer para conocerlos todos.

Instalando las librerías o software definido como dependencias

Una vez declarado ese json en la carpeta de nuestro proyecto tienes que lanzar un comando para que composer se ponga en marcha, revise los paquetes que hemos declarado, los descargue con sus dependencias y los instale en la carpeta de nuestro proyecto.

Ese comando de consola lo tienes que hacer desde la carpeta de tu proyecto. Abres el terminal y te situas en la carpeta donde has creado en composer.json.

Dependiendo de la instalación que hayamos realizado de Composer el comando puede tener ligeras variaciones. Esto también puede depender de tu sistema operativo.

Si estamos en Windows es tan sencillo como hacer:

composer install

Nota: Lógicamente ese comando no te va a funcionar si no has instalado previamente Composer.

Recuerda que en Windows Composer se instala de manera global, para que funcione desde el terminal en cualquier carpeta de tu sistema. Simplemente te colocarás en la carpeta de tu proyecto y lanzarás el comando "composer install" para descargar e instalar dependencias.

Si estamos en Linux/Mac y hemos instalado Composer de manera local a un proyecto. Será algo como:

php composer.phar install

Si estás en Linux/Mac y has hecho los pasos para instalar Composer de manera global el comando puede ser:

composer install

Esto es así en el caso de Mac OSX habiendo instalado Composer a través de Homebrew. Pero en el caso de Linux quizás tengas que hacer:

composer.phar install

Nota: Para saber cómo instalar Composer y sobre las variantes global y local en sistemas Linux / Mac OSX, por favor revisa el artículo sobre Instalar Composer. Si tienes cualquier problema no está de más consultar por Internet pues muchos desarrolladores seguramente hayan pasado por ello antes.

En este punto quiero mencionar una página que a mi me ha sacado de dudas, en askubuntu http://askubuntu.com/questions/116960/global-installation-of-composer-manual donde además un usuario propone un modo de crear un alias para que en Linux no tengas que hacer "composer.phar install", sino simplemente "composer install".

alias composer='/usr/local/bin/composer.phar'

Lógicamente antes tienes que haber hecho global tu instalación de Composer como ya expliqué en el artículo sobre la instalación mencionado en esta nota.

Volviendo de nuevo al comando

php composer.phar install

Por explicarlo un poco ese podemos decir que el programa que está haciendo funcionar es composer.phar es el ejecutable de PHP. Sin embargo, si no le colocas php delante, el sistema también es inteligente para saber que los .phar se tienen que correr bajo el intérprete de PHP. Lógicamente debes tener PHP en tu sistema y debe estar disponible de manera global para que, estando en la carpeta de tu proyecto, el terminal sea capaz de saber dónde está el ejecutable de PHP. en ese comando llamas a composer.phar que es un archivo ejecutable escrito en PHP y luego a Composer le estás diciendo que instale las dependencias.

Actualizando dependencias con Composer

Una vez ya tienes las dependencias instaladas, si deseas actualizarlas, o bien si has añadido dependencias a tu archivo JSON, harás un comando como este:

composer update

Nota: Las variantes de ese comando serán más o menos igual que las del comando "composer install" dependiendo de nuestra instalación de composer. Quizás en tu sistema debas hacer algo como "php composer.phar update".

Con eso Composer se descargará automáticamente las librerías que se hayan actualizado, o aquellas que se han agregado al composer.json y las colocará dentro de la carpeta "vendor" de tu proyecto.

Usar los paquetes instalados por Composer

Aparte de facilitar enormemente la descarga e instalación de las dependencias, Composer te proporciona un sistema de "autoload" de las clases que componen aquellas librerías que estás usando.

Cuando instalas una dependencia via Composer te crea un directorio llamado "vendor" que es donde se instalan todas las librerías que has solicitado. Además, en esa misma carpeta encontrarás un archivo llamado "autoload.php" que es el único script que deberás incluir desde PHP.

<?php
require "vendor/autoload.php";
// ahora ya puedes acceder a las clases creadas por las librerías declaradas como dependencias…

Es tan sencillo como esto. No tienes que hacer nada más. Cada vez que necesites una clase o una función de las declaradas en las dependencias de tu composer.json, estará disponible para ti sin que tengas que hacer otras acciones. Como observarás, este mecanismo también te permite evitar crear una serie de includes o requires en todos tus archivos PHP, reduciendo tu código.

Sin duda usar Composer te facilitará mucho la vida en el día a día como desarrollador de PHP. Una vez te acostumbres a este Workflow, muy sencillo como has podido comprobar, no entenderás cómo puedes haber vivido tanto tiempo sin él.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual