Composer, el manual oficial

1.1. Gestionando las dependencias

Composer no es un gestor de paquetes. Aunque es cierto que trata con paquetes y librerías, la instalación siempre es local para cada proyecto, ya que las librerías se instalan en un directorio del proyecto (por defecto ese directorio es vendor/). Como por defecto Composer no instala ninguna librería globalmente, en realidad es un gestor de dependencias y no de paquetes.

Esta idea no es nueva, ya que Composer está inspirado por las herramientas npm de NodeJS y bundler de Ruby. Lo que sí que es nuevo es la disponibilidad de una herramienta como esta para aplicaciones PHP.

El problema que resuelve Composer es el siguiente:

  • Dispones de un proyecto que depende de varias librerías desarrolladas por terceros.
  • A su vez, varias de esas librerías dependen de otras librerías (tu no tienes por qué conocer estas dependencias "indirectas").
  • Como desarrollador, tu solamente declaras las dependencias "directas" de tu proyecto.
  • Composer averigua qué librerías deben instalarse (es decir, resuelve todas esas dependencias indirectas) y descarga automáticamente la versión correcta de cada librería.