Por Hugo Cayón Laso

Composer en PHP: guía completa para empezar

¿Qué es Composer y para qué sirve?

Composer es el gestor de dependencias de PHP. Permite instalar, actualizar y gestionar librerías externas de forma sencilla y controlada, similar a npm en JavaScript o pip en Python.

Composer se basa en un archivo llamado composer.json, donde se definen las dependencias y la configuración del proyecto.

Esto facilita la integración de librerías de terceros, asegurando que las versiones sean compatibles y que el proyecto se mantenga organizado.

Instalación de Composer

macOS y Linux

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer

Windows

Descarga el instalador desde getcomposer.org y sigue las instrucciones del asistente.

Verificar la instalación

Para verificar que Composer se ha instalado correctamente, ejecuta:

composer --version

Deberías ver la versión de Composer instalada.

Composer version 2.x.x 2024-01-01 12:00:00

Estructura básica de un proyecto con Composer

Un proyecto típico con Composer tiene la siguiente estructura:

├── composer.json
├── composer.lock
├── vendor/
    └── autoload.php
  • composer.json: Define las dependencias y la configuración del proyecto.
  • composer.lock: Registra las versiones exactas de las dependencias instaladas.
  • vendor/: Carpeta donde se instalan las dependencias.
  • autoload.php: Archivo generado automáticamente para cargar las clases de las dependencias.

Crear un archivo composer.json

Puedes crear un archivo composer.json manualmente o utilizando el comando:

composer init

Este comando te guiará a través de una serie de preguntas para configurar tu proyecto.

Un ejemplo básico de composer.json podría ser:

{
    "name": "mi-proyecto/ejemplo",
    "description": "Un proyecto de ejemplo usando Composer",
    "require": {
        "monolog/monolog": "^2.0",
        "guzzlehttp/guzzle": "^7.0",
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "minimum-stability": "stable",
}

Instalar dependencias

Para instalar las dependencias definidas en composer.json, ejecuta:

composer install

Esto creará la carpeta vendor/ y descargará las librerías necesarias.

Instalar una nueva dependencia

Para agregar una nueva dependencia a tu proyecto, usa el comando:

composer require nombre/dependencia

Actualizar dependencias

Para actualizar las dependencias a las últimas versiones permitidas por las restricciones en composer.json, usa:

composer update

Este comando actualizará las librerías y modificará el archivo composer.lock en consecuencia. Hay que tener cuidado al usarlo en proyectos en producción, ya que puede introducir cambios inesperados.

Autoloading

Una de las características más útiles de Composer es el autoloading automático. Composer genera automáticamente un archivo que puedes incluir en tu proyecto para cargar las clases de las dependencias instaladas.

Para usar el autoloading, simplemente incluye el siguiente código al inicio de tu script PHP:

require 'vendor/autoload.php';

Autoloading de las clases propias (PSR-4)

Si has configurado el autoloading en composer.json, también se cargarán tus propias clases automáticamente, puedes usar el siguiente ejemplo:

"autoload": {
    "psr-4": {
        "App\\": "src/"
    }
}

Esto te permite utilizar las clases de las librerías instaladas sin necesidad de cargarlas manualmente.

Después de modificar el composer.json para agregar nuevas rutas de autoloading, asegúrate de ejecutar:

composer dump-autoload

Estructura de carpetas recomendada:

├── src/
│   └── MiClase.php
├── composer.json
├── composer.lock
├── vendor/
    └── autoload.php

Ejemplo de uso:

// src/MiClase.php
<?php
namespace App;

class MiClase {
    public function saludar() {
        return "¡Hola desde MiClase!";
    }
}
// index.php
<?php
require 'vendor/autoload.php';

use App\MiClase;

$miClase = new MiClase();
echo $miClase->saludar(); // Salida: ¡Hola desde MiClase!

Comandos útiles de Composer

  • composer install: Instala las dependencias del proyecto.
  • composer update: Actualiza las dependencias a las últimas versiones permitidas.
  • composer require nombre/dependencia: Agrega una nueva dependencia al proyecto.
  • composer remove nombre/dependencia: Elimina una dependencia del proyecto.
  • composer dump-autoload: Regenera el archivo de autoloading.
  • composer show: Muestra las dependencias instaladas y sus versiones.
  • composer outdated: Muestra las dependencias que tienen actualizaciones disponibles.
  • composer validate: Valida el archivo composer.json para asegurarse de que esté correctamente formateado.
  • composer why nombre/dependencia: Muestra por qué una dependencia está instalada (qué otra dependencia la requiere).
  • composer global require nombre/dependencia: Instala una dependencia de forma global en el sistema.
  • composer global update: Actualiza las dependencias instaladas globalmente.
  • composer licenses: Muestra las licencias de las dependencias instaladas.
  • composer config: Permite ver y modificar la configuración de Composer.
  • composer clear-cache: Limpia la caché de Composer para liberar espacio o solucionar problemas de instalación.
  • composer clear-cache --all: Limpia toda la caché de Composer, incluyendo cachés de paquetes y metadatos.
  • composer run-script nombre-script: Ejecuta un script definido en la sección scripts del archivo composer.json.
  • composer help [comando]: Muestra la ayuda detallada para un comando específico de Composer.
  • composer diagnose: Realiza un diagnóstico del entorno de Composer para identificar posibles problemas de configuración o instalación.
  • composer init: Inicia un asistente para crear un nuevo archivo composer.json desde cero.
  • composer lock: Bloquea las versiones de las dependencias instaladas para garantizar la consistencia en diferentes entornos.
  • composer require --dev nombre/dependencia: Agrega una dependencia solo para el entorno de desarrollo.
  • composer remove --dev nombre/dependencia: Elimina una dependencia del entorno de desarrollo.
  • composer update --lock: Actualiza solo el archivo composer.lock sin modificar las dependencias instaladas.
  • composer global show: Muestra las dependencias instaladas globalmente en el sistema.
  • composer global outdated: Muestra las dependencias globales que tienen actualizaciones disponibles.
  • composer global remove nombre/dependencia: Elimina una dependencia instalada globalmente.
  • composer global dump-autoload: Regenera el archivo de autoloading para las dependencias instaladas globalmente.

Apuntes finales

Para acabar, Composer es una herramienta esencial para cualquier desarrollador PHP que busque gestionar dependencias de manera eficiente y profesional. Su uso adecuado mejora la organización del proyecto, facilita la integración de librerías externas y asegura la compatibilidad entre diferentes versiones de paquetes. Adoptar Composer en tus proyectos PHP es un paso fundamental hacia un desarrollo más estructurado y mantenible. ¡No dudes en explorar más sobre sus funcionalidades y sacarle el máximo provecho!

Hasta la próxima.

¿Te ha gustado? ¡Compártelo!