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 archivocomposer.jsonpara 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ónscriptsdel archivocomposer.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 archivocomposer.jsondesde 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 archivocomposer.locksin 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.