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.