El autoloading es el mecanismo que carga una clase cuando el código la utiliza, sin escribir un require por cada archivo.
¿Recuerdas esos archivos index.php antiguos que tenían 50 líneas al principio haciendo require_once de cada modelo, controlador y librería?
// EL PASADO (PESADILLA)
require_once 'includes/db.php';
require_once 'modelos/Usuario.php';
require_once 'modelos/Producto.php';
require_once 'controladores/HomeController.php';
// ... y así 50 archivos másEsto es insostenible. Si cambias un archivo de carpeta, tienes que actualizar todos los require. Si tienes 100 clases pero solo usas 1, cargabas las 100 en memoria inútilmente.
El Autoloading (Carga Automática) soluciona esto. Es un sistema que dice: “No cargues nada al principio. Espera a que el código pida una clase (ej: new Usuario) y, en ese preciso instante, busca el archivo y cárgalo automáticamente”.
¿Qué es PSR-4?
Para que el Autoloading funcione, necesitamos una regla clara que le diga a PHP dónde buscar los archivos.
PSR-4 es esa regla estándar. Establece una correspondencia directa entre tu Namespace y tu Estructura de Carpetas.
Si tu clase se llama App\Modelos\Usuario, PHP buscará automáticamente el archivo en la carpeta src/Modelos/Usuario.php (asumiendo que App apunta a src).
Configurando Composer para PSR-4
No tienes que escribir la función de autoload a mano. Composer lo hace por ti. Solo tienes que decirle en el composer.json cuál es tu carpeta principal.
Supongamos que tu código está en la carpeta src/ y quieres usar el namespace raíz MiApp.
En tu composer.json:
{
"autoload": {
"psr-4": {
"MiApp\\": "src/"
}
}
}(Nota las dobles barras \\. Son necesarias porque en JSON la barra invertida es un caracter de escape).
Activar el autoload
Una vez modificado el JSON, debes avisar a Composer para que actualice sus mapas internos. Ejecuta en la terminal:
composer dump-autoloadEl resultado final
Ahora, en tu archivo principal (por ejemplo, index.php), solo necesitas una única línea de código para cargar TODO tu proyecto, incluidas las librerías externas que bajaste.
Archivo: public/index.php
<?php
// Esta línea activa el autoloader de Composer
require __DIR__ . '/../vendor/autoload.php';
use MiApp\Modelos\Usuario;
use Monolog\Logger; // Una librería externa instalada con Composer
// ¡Funciona! PHP detecta que usas "Usuario", busca en src/Modelos/Usuario.php y lo carga.
$user = new Usuario();
// ¡También funciona! Busca en la carpeta vendor la librería Monolog.
$log = new Logger('nombre');