Saltar al contenido principal

Autoload con Composer

Composer es una herramienta de gestión de dependencias para PHP. Permite instalar, actualizar y cargar automáticamente librerías externas que necesite nuestro proyecto.

En lugar de descargar manualmente archivos de terceros, Composer se encarga de:

  • Descargar las librerías necesarias (por ejemplo, para conexión a bases de datos, plantillas, envío de correos, etc.).
  • Mantener sus versiones actualizadas.
  • Y lo más importante: cargar automáticamente todas las clases mediante su sistema de autoload.

Composer se ha convertido en un estándar en el desarrollo moderno de PHP, usado en la mayoría de frameworks como Laravel, Symfony o CodeIgniter.

El autoload de Composer

Cuando instalas Composer en tu proyecto y ejecutas comandos como:

composer install

Composer genera un archivo llamado:

vendor/autoload.php

Este archivo contiene toda la lógica necesaria para cargar automáticamente las clases de las librerías que has instalado, y también las tuyas propias, si lo configuras.

De esta forma, en tu aplicación solo necesitas incluir una única línea al principio de tu código principal:

require_once __DIR__ . '/vendor/autoload.php';

Y a partir de ahí, todas las clases estarán disponibles automáticamente, sin necesidad de registrar tu propio spl_autoload_register().

PSR-4: el estándar de nombres y rutas

Composer utiliza un estándar llamado PSR-4, que define cómo deben relacionarse los namespaces y las rutas de los archivos.

El namespace de una clase indica en qué carpeta se encuentra. Composer usa esa información para encontrar automáticamente el archivo correcto.

Por ejemplo, si tienes esta estructura:

src/
└── Controladores/
└── UsuarioController.php

Y tu clase se define así:

<?php
namespace App\Controladores;

class UsuarioController {
public function mostrar() {
echo "Mostrando usuario";
}
}

Entonces en tu archivo composer.json puedes indicar:

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

Tras ejecutar:

composer dump-autoload

Composer sabrá que cualquier clase que empiece por App\ se encuentra dentro de la carpeta src/. Así, cuando uses:

use App\Controladores\UsuarioController;

$controller = new UsuarioController();
$controller->mostrar();

Composer se encargará de cargar automáticamente el archivo src/Controladores/UsuarioController.php.

Autoload nativo o con Composer

El autoload nativo de PHP con spl_autoload_register() es ideal para proyectos pequeños o didácticos, donde queremos entender cómo se cargan las clases. Sin embargo, en proyectos reales o profesionales, Composer se encarga del autoload de forma automática y estandarizada, siguiendo PSR-4. Composer es la herramienta que lo automatiza en proyectos reales.