¿Qué es Composer y cómo se usa en PHP?

En este tutorial de Composer para PHP vamos a ver su implementación para gestionar nuestras dependencias.

Rodríguez Patiño, Eduardo
2020-09-20 | 23,755 lecturas

Es normal que cuando queremos descargar una librería lo que tenemos que hacer es entrar a su página web, descargar el archivo, descomprimirlo y agregarlo a nuestro proyecto. Con Composer esto se vuelve algo más fácil y disponemos de una web para buscar las dependencias que necesitamos para nuestro proyecto en base a criterios de búsqueda.

¿Qué es Composer?

Es un administrador de dependencias para PHP que nos permite descargar paquetes desde un repositorio para agregarlo a nuestro proyecto. Por defecto, se agregan a una carpeta llamada /vendor. De esta manera evitamos hacer las búsquedas manualmente y el mismo Composer se puede encargar de actualizar las dependencias que hayamos descargado por una nueva versión.

Algo similar al NPM de Node JS, Bower de Twitter y Nuget de .NET.

¿Cómo se instala?

Ingresamos a la siguiente URL y descargamos el ejecutable. En mi caso, como uso Windows, descargo el ejecutable para Windows, luego lo instalo y en uno de los pasos me pedirá ubicar el archivo php.exe. Este, por ejemplo si usamos Wamp Server lo encontramos en la siguiente ruta "wamp\bin\php\php5.5.12".

Con eso ya tenemos instalado Composer.

¿Ahora qué hago?

Bien creemos un nuevo proyecto, en mi caso agregué una nueva carpeta a mi directorio público de wamp "www/composer_demo" y luego abrimos la consola de comandos y abrimos nuestro navegador favorito para irnos a la siguiente página a buscar alguna dependencia.

Por ejemplo voy a buscar Fluent PDO la cual me permite trabajar con PDO de manera más práctica, agilizando bastante código. Para ello escribo Fluent PDO en la caja de búsqueda y elegimos la que dice lichtner/fluentpdo.

Bien, entramos a la información general de la dependencia y lo que tenemos que hacer ahora es agregarla a nuestro proyecto. Para esto, volvemos a la consola y debemos posicionarnos en la carpeta que hemos creado para nuestro proyecto.

Ahora ejecutamos el siguiente comando para agregar la dependencia:

composer require lichtner/fluentpdo

Si todo ha salido bien deberíamos ver algo como esto.

Ya agregamos la dependencia a nuestro proyecto, ¿Ahora?

Hasta este punto tenemos agregado la dependencia a nuestro proyecto y se ha creado los siguientes archivos.

  • /vendor
  • composer.json
  • composer.lock

De estos 3 solo nos interesa los 2 primeros, vendor almacena todos los archivos necesarios de las dependencias descargadas y composer.json es un archivo json que nos sirve para gestionar las dependencias instaladas a nuestro proyecto.

Cargando las dependencias a nuestro archivo index.php

Muy bien, ahora solo tenemos que cargar todas estas dependencias a nuestro archivo index.php o a nuestro archivo que levantará a nuestro proyecto. Para este ejemplo solo vamos a ver como cargar las dependencias.

Lo que hacemos es crear en la raíz de nuestro proyecto un archivo index.php y agregar el siguiente código:

<?php
    require 'vendor/autoload.php';

Ya está, el autoload.php de vendor se encargará de cargar todas las dependencias por nosotros. Para hacer una prueba hagamos un var_dump a la clase de FluentPDO.

require 'vendor/autoload.php';

$pdo = new PDO("mysql:dbname=anexsoft", "root", "");
$fpdo = new FluentPDO($pdo);

var_dump($fpdo);

Si todo está bien debería arrojar la siguiente información del caso contrario, una excepción de clase no encontrada.

object(FluentPDO)[3]
  private 'pdo' => 
    object(PDO)[2]
  private 'structure' => 
    object(FluentStructure)[4]
      private 'primaryKey' => string 'id' (length=2)
      private 'foreignKey' => string '%s_id' (length=5)
  public 'debug' => null

¿Quiero agregar una nueva dependencia?, ¿Qué hago?

Buscamos otra dependencia en el listado de paquetes, por ejemplo yo he buscado todo lo relacionado a "thumb" para generar copias de imágenes y encontre la siguiente dependencia de un gran listado.

composer require deresh/thumb

Y ya está, si abrimos el archivo composer.json veremos la siguiente información actualizada:

{
    "require": {
        "lichtner/fluentpdo": "^1.0",
        "deresh/thumb": "^1.0"
    }
}

En resumen, cuando búsquemos por librerías para PHP, vamos a encontrar ahora que nos dan el comando para ejecutarlo desde Composer. Por ejemplo, Laravel se instala vía Composer.