Composer, gestor de dependencias para PHP

  • Por
Composer es una herramienta imprescindible para los desarrolladores en PHP, que permite gestionar de una manera ágil las dependencias de un proyecto.

Composer es un gestor de dependencias en proyectos, para programación en PHP. Eso quiere decir que nos permite gestionar (declarar, descargar y mantener actualizados) los paquetes de software en los que se basa nuestro proyecto PHP. Se ha convertido en una herramienta de cabecera para cualquier desarrollador en este lenguaje que aprecie su tiempo y el desarrollo ágil.

¿Empiezas un nuevo proyecto con PHP? echa un vistazo antes a Composer porque te puede ayudar bastante en el arranque y gracias a él podrás resumir muchas de las tareas de mantenimiento de las librerías de terceros que estés usando.

https://getcomposer.org

En este artículo te resumimos los detalles para entender qué es Composer, cómo funciona y para instalarlo en tu sistema. Primero comenzaremos explicando qué es un gestor de dependencias, luego veremos cómo funciona Composer para darnos cuenta qué aspectos de nuestro día a día nos va a simplificar. Por último veremos cómo instalarlo y cómo usar librerías gestionadas con Composer en nuestro código PHP.

Por qué un gestor de dependencias

Cuando comienzas un proyecto en PHP, ya de cierta complejidad, no te vale solo con la librería de funciones nativa de PHP. Generalmente todos usamos alguna que otra librería de terceros desarrolladores, que nos permite evitar empezar todo desde cero. Ya sea un framework o algo más acotado como un sistema para debug o envío de email, validación de formularios, etc., cualquier cosa que puedas necesitar ya está creada por otros desarrolladores. Si no la estás usando ninguna librería posiblemente estés perdiendo tu precioso tiempo, pero eso es otra discusión.

De modo que, al comenzar el proyecto hasta ahora teníamos que ir a la página de cada uno de los componentes de software que queríamos usar, descargarlos, copiarlos en la carpeta de nuestro proyecto, etc. No solo eso, cuando estamos en mitad del desarrollo, o ya en producción, y nos cambian la versión de la librería, tenemos que volverla a descargar manualmente, actualizar los archivos, etc. Nadie se había muerto por hacer todo ese tipo de tareas de configuración y mantenimiento, pero no cabe duda que nos llevan un tiempo.

Todo eso sin contar con que ciertos softwares, como un framework como Symfony, dependen a su vez de muchas otras librerías que tendrías que instalar a mano y a su vez, mantener actualizadas.

Los gestores de paquetes nos ayudan para resumir las tareas de descarga y mantenimiento de las versiones del proyecto para que estén siempre actualizadas. Ya existían en otros lenguajes de programación y nos resultaban especialmente útiles como npm en NodeJS. Ahora los desarrolladores de PHP también contamos con esta herramienta gracias a Composer.

Cómo funciona Composer

Composer nos permite declarar las librerías que queremos usar en un proyecto. Su uso es extremadamente simple, lo que anima a cualquier persona a usarlo, sea cual sea su nivel técnico.

Para beneficiarnos del workflow que nos propone Composer simplemente tenemos que escribir un archivo de configuración en el que indicamos qué paquetes vamos a requerir. El archivo es un simple JSON en el que indicamos cosas como el autor del proyecto, las dependencias, etc.

El archivo JSON debe tener un nombre específico: composer.json

A continuación tienes un ejemplo de JSON donde declaramos varios parámetros de nuestra aplicación.

{
    "name": "desarrolloweb/probando-composer",
    "require": {
        "phpmailer/phpmailer": "5.2.*",
    }
}

Luego nos pondremos a desgranar este código para que se entienda cada una de sus partes, así como veremos qué otra información podemos colocar en este JSON. La idea es ver lo sencillo que es declarar qué librerías o software estás utilizando y con ello dejar nuestro proyecto listo para la "magia" de Composer.

Una vez tenemos definidas las dependencias en nuestro proyecto debemos instalarlas. Esto lo conseguimos con un simple comando en el terminal en el que le pedimos a Composer que las instale:

composer install
Nota: Ese comando puede variar según la instalación que tengas en tu sistema de Composer. Especificaremos en un futuro artículo diversas situaciones en las que tengamos que generar variantes de este mismo comando. De momento nos vamos a quedar en una presentación de Composer, pero en seguida nos ponemos a aprender en detalle aquí en DesarrolloWeb.com

Lanzado ese comando Composer se encargará de ir a los repositorios de paquetes de software y descargar aquellas librerías mencionadas, copiándolas en la carpeta de tu proyecto.

Una vez finalizado el proceso en tu consola de comandos podrás encontrar en la carpeta de tu proyecto un directorio llamado "vendor" donde estarán las librerías declaradas. Ya solo nos queda hacer los includes para que estén disponibles en tus aplicaciones y para ello también nos ayuda Composer.

Simplemente tendremos que hacer un único include o require en nuestro código y todas las librerías estarán disponibles para usar.

require 'vendor/autoload.php';

Packagist

Para terminar de convencerte y contarte la introducción completa, debes echar un vistazo a Packagist. Se trata del repositorio de paquetes que son instalables por medio de Composer.

En la página de Packagist encontrarás un buscador que te puede dar una idea de la cantidad de material que encuentras disponible para usar en cualquier proyecto PHP.

https://packagist.org/

Simplemente busca por cualquier concepto que te interese, como email, template, wysiwyg, etc. Verás que te aparecen varias opciones clasificadas por popularidad, descargas, etc. Además sobre cada paquete encuentras información y el código necesario para declarar tu dependencia en el JSON de Composer.

Conclusión

Espero que con lo que hemos visto hasta ahora te haya llamado la atención esta herramienta. La verdad es que es muy útil y como decimos, una vez comienzas a usarla te das cuenta de todo el trabajo que te quita del medio, no solo en la descarga de los paquetes, sino también en las actualizaciones de las librerías con el comando "composer update" que veremos más adelante.

Sabemos que nos hemos dejado muchas cosas en el tintero, como el proceso de instalación y el detalle del JSON, pero lo veremos ya en próximos artículos. De momento queríamos presentarte el gestor de dependencias y que sepas por qué los desarrolladores de PHP lo hemos adoptado con tanto entusiasmo.

En el próximo artículo vamos a detallar el proceso de instalación de Composer.

Además de los próximos artículos donde vamos a explicarlos los detalles del flujo de trabajo con Composer para la gestión de dependencias, vamos a presentaros ahora un vídeo de nuestro canal de Youtube donde encuentras resumidos algunos de los pasos básicos de uso de Composer.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Martín

20/10/2014
Es necesario actualizar siempre?
Yo tengo por política no actualizar las librerías de proyectos que están estables en producción, ya que de esta forma podría cambiar el comportamiento del software por funciones que cambian o desaparecen.
Algo muy distinto es empezar un proyecto desde cero con la última versión de una librería, que a lo sumo llevará un tiempo de curva de aprendizaje (si el cambio es significativo), pero si actualizas para estar "al último grito de la moda" te expones a que aparezca un bug que antes no tenías...

midesweb

21/10/2014
Actualizar o no es decisión tuya
Hola,
Martín, tus motivos son lógicos y la mayoría hacemos cosas similares. Pero hay que decir que Composer no te obliga a tener siempre las últimas versiones. Eres capaz de decirle qué versiones te quieres quedar, o qué rama. Por ejemplo, la 5.2.1, o una versión con una actualización menor 5.2.x, o actualizaciones mayores, pero sin pasar de la versión dada 5.x, etc.

De todos modos, otra discusión sería en qué momento actualizar. Generalmente las actualizaciones tienen mejoras y cuando se trata de mejoras de seguridad, hacerlas se convierte en algo crítico. Al menos tu trabajo sería explicarle a tu cliente que hay versiones más actuales de paquetes de software que tiene en producción y que sería recomendable actualizar. Lógicamente el cliente es el que debería pagar tu tiempo para realizar esa actualización.

PedroCadiz

31/5/2016
Buena artículo
Muy buen artículo estoy intalando laravel através de composer y en los tutoriales aparence composer y no tenia ni idea que era, con tu video tutorial me ha quedado clarisimo, gracias.