Guía básica de uso de composer

Composer es un gestor de dependencias ampliamente utilizado en PHP. Es una herramienta muy útil que nos permitirá mejorar enormemente nuestro flujo de trabajo. Merece la pena invertir nuestro tiempo en su aprendizaje y utilización en nuestros proyectos.

Realiza por ti todas las tareas de instalación de librerías, plugins, etc que uses en tu proyecto. Mediante un simple ficheros de declaración, composer descargará y mantendrá actualizados todos los componentes de tu proyecto. Está especialmente aconsejado su uso en proyectos complejos como los que puedes llegar a desarrollar en cakephp

.

Instalación de composer en windows

  1. Desde tu navegador accede a la siguiente dirección https://getcomposer.org/installer
  2. Guarda el fichero descargado en la carpeta raíz de tu proyecto PHP
  3. Ejecuta:
    php -f ficherodescargado
  4. Si no te ha funcionado el comando anterior puede deberse a dos motivos: No tienes php instalado en tu equipo, o este no se encuentra en el camino de búsqueda.
  5. Si ha funcionado correctamente verás que se ha generado un fichero composer.phar en el directorio raíz del proyecto. Ejecuta para ver las opciones de composer.
    php composer.phar

Esta instalación únicamente es válida para este proyecto. Si quieres utilizar composer de manera global, mueve el fichero composer.phar a cualquiera de estos directorios:

C:\Windows\system32;C:\Windows;
. Ahora crea un fichero en el mismo directorio donde has situado composer.phar que se llame composer.bat con el siguiente contenido:

@ECHO OFF
php "%~dp0composer.phar" %*

Instalación de composer en linux o mac

  1. Abre una consola terminal y sitúate en el directorio raíz del proyecto.
  2. Ejecuta: curl -s https://getcomposer.org/installer | php
  3. Si todo es correcto tendrás un fichero composer.phar en tu directorio. Si quieres comprobarlo ejecuta el siguiente comando:
    php composer.phar
  4. Para que la instalación se convierta en global y lo puedas utilizar para todos los proyectos deberás moverlo a un directorio cuyo contenido sea accesible como:
    sudo mv composer.phar /usr/local/bin/composer
  5. Comprueba que todo va bien ejecutando:
    sudo composer self-update

Funcionamiento

Composer utilizar un fichero con formato JSON denominado composer.json. En este fichero se registran todas las piezas de ficheros que requiere tu proyecto para funcionar correctamente.

{
     "name":"desarrolloweb/probando-composer",
     "require": {
        "cakephp/cakephp": "3.4.*"
     }
}

Una vez que hemos definido el fichero y declarado las dependencias ejecutaremos composer con el parámetro install.

composer install

En el caso de que la librería que estemos incluyendo necesitara otros plugins o componentes, será composer quien se encargue de descargarlos y actualizar nuestro fichero composer.json con las nuevas dependencias.

Para poder utilizar las librerías instaladas en nuestro proyecto PHP simplemente hay que incluir la siguiente línea:

require 'vendor/autoload.php';

El fichero autoload.php será el responsable de cargar todos ficheros de las librerías declaradas en composer.json. En el caso de cakephp 3.0 no es necesario incluir este línea de código ya que está implementada en el fichero index.php de la carpeta /webroot.

composer.json al detalle

Campos informativos sobre el proyecto
  • name: Aquí indicamos el nombre del autor, tiene dos partes,  nombre del autor / nombre del proyecto
  • description: Descripción del paquete, normalmente es una línea.
  • homepage: URL de la web del proyecto.
  • authors: En este array se contienen los datos de los diversos autores del proyecto. Cada elemento del array es a su vez otro array donde se pueden indicar los datos individuales de cada autor: name, email, homepage, role.

{
     "name": "cakephp/app",
     "description": "CakePHP skeleton app",
     "homepage": "http://cakephp.org",
     "authors": {
          "name":"José Manuel Invernón",
          "email":"invernonxxx@gmail.com",
          "homepage":"http://www.programadorfreelancecakephp.es"
     }
}

Definir dependencias: require

Este es el apartado más importante, ya que es donde le indicamos al composer qué librerías vamos a utilizar y con qué condiciones. La primera parte es el nombre de la librería (vendor/name), en la parte del valor se indica información referente a la versión de la librería:

  • Versión concreta: En este caso indicamos un número de versión concreto, por ejemplo "3.3.0". Principalmente vale para que no se actualize esa librería, instalará siempre esa versión concreta.
  • Rango: Se pueden utilizar operadores lógicos, como por ejemplo para indicar una versión mínima de la librería: ">=3.0".
  • Comodines: Establece que se instalará una versión raíz concreta pero cualquier de las subversiones. Por ejemplo 3.3.* puede instalar cualquier subversión como la 3.3.1, 3.3.2 ... 3.3.x.
  • Virgulilla: Significa, "próxima versión". Por ejemplo, "~3.2" instalará  la versión mayor o igual a la 3.2 y menor que la 4.0.
  • Arroba: Nos indica que tipo de versión se instalará, por ejemplo  "1.0@dev" permitirá instalar librerías que están consideradas en estado inestables.

"require":{
     "respect/validation":"0.6.*",
     "phpunit/phpunit":">=4.0",
     "tinymce/tinymce":"dev-master"
}

Parámetros más comunes

Actualizar composer: Es aconsejable trabajar con la última versión del gestor de dependencias, no sólo por mantenerlo en su versión más reciente, sino porque muchas veces es la solución a problemas que pudieran surgir.

composer self-update

Actualizar los paquetes: Leerá el fichero composer.json y en función de los criterios de las dependencias descargará las últimas versiones de las librerías.

composer update

Añadir nuevos paquetes: Leerá los ficheros del directorio actual y añadirá los requires correspondientes al fichero composer.json. El gestor de dependencias lo hace de manera interactiva, por ello nos irá preguntando directorio a directorio.

composer require

Eliminar paquetes: Eliminará del fichero composer.json y del directorio actual los paquetes que le indiquemos en la línea de comando.

composer remove respect/validation

Listar paquetes: Mostrará una lista de los paquetes/librerías disponibles para el proyecto.

composer show

Buscar paquetes: Buscará en el repositorio del proyecto ( por defecto Packagist ) el nombre indicado.

composer seach cakephp

En la web de composer puedes encontrar el manual completo de todas sus opciones.

Packagist

Para añadir paquetes a tu proyectos puedes utilizar la web packagist.org, es un repositorio de paquetes preparados para ser instalados mediante el gestor de dependencias. La página dispone de un buscador que te ayudará a encontrar la librería o paquete que tu proyecto PHP necesita.

https://packagist.org/

Volver al índice del blog