Autocarga de archivos con Composer y PSR-4

Resumen

Si ya dominas la modularización y los namespaces en PHP, el siguiente paso natural es aprender a usar Composer con PSR-4 para autocargar archivos sin depender de require o include. Esta combinación es la forma profesional de organizar proyectos PHP y la base de frameworks como Laravel.

¿Qué es PSR-4 y por qué importa en PHP?

PSR son reglas que definen cómo deberíamos trabajar con PHP, creadas por la organización PHP-FIG, un grupo de programadores que estandariza el lenguaje [0:30].

La regla PSR-4 se enfoca en la autocarga de archivos. Lo que dice es simple: cada namespace debe coincidir con la ruta de la carpeta donde está guardado el archivo, y el nombre de la clase debe ser igual al nombre del archivo.

¿Qué es PSR-4 en PHP? Es un estándar que mapea namespaces a rutas de carpetas para que las clases se carguen automáticamente. El namespace refleja la ubicación del archivo y el nombre de la clase coincide con el del archivo.

¿Cómo se conecta Composer con PSR-4?

Composer usa PSR-4 para hacer carga automática de todos tus archivos definiendo únicamente namespaces [1:20]. Esto elimina la necesidad de escribir include, require o require_once en cada archivo.

¿Cómo configurar Composer paso a paso?

Para empezar, crea una carpeta de proyecto y ejecuta composer init en la terminal [2:00]. Composer te hará varias preguntas:

  • Nombre del paquete (formato autor/proyecto).
  • Descripción y autor.
  • Minimum stability y tipo de paquete (en este caso, project).
  • Licencia, por ejemplo MIT.
  • Dependencias y dependencias de desarrollo.
  • Configuración de PSR-4 mapping.

Al finalizar, se genera un archivo composer.json con la configuración del proyecto [3:30].

¿Cómo definir el autoload PSR-4 manualmente?

Dentro de composer.json agregas la sección de autocarga así:

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

Esto le dice a Composer que cualquier namespace que empiece con App corresponde a la carpeta App/ del proyecto [4:30]. La estructura típica dentro de App incluye subcarpetas como classes y logic para separar la lógica.

¿Cómo aplicar las reglas PSR-4 en tus clases?

PSR-4 establece dos condiciones que debes respetar siempre. Si las rompes, Composer no podrá cargar tus archivos.

  1. La clase debe llamarse igual que el archivo. Si tu archivo es MichisAdoptados.php, la clase debe ser MichisAdoptados.
  2. El namespace debe coincidir con la ruta de carpetas. Si el archivo vive en App/classes/, el namespace es App\classes.

Un ejemplo concreto en una clase ubicada en App/classes/Michi.php:

php

<?php namespace App\classes; class Michi { // getters y método sayMiaw } > **¿Qué pasa si no sigo el estándar PSR-4?** Composer no detectará tu archivo y obtendrás errores de clase no encontrada. Aunque la sintaxis de PHP sea válida, el autoloader fallará al buscar la ruta. ### ¿Cómo importar clases con use sin require? Dentro de un archivo nuevo, por ejemplo `App/logic/CreateMichis.php`, puedes usar las clases con `use` directamente: php <?php use App\classes\Michi; use App\classes\MichisAdoptados; function createMichis() { $mr_michi = new Michi('Mr. Michi', 'blanquito', 16); $mr_michi_adopted = new MichisAdoptados('Mr. Michi', new DateTime('2022-04-16'), 'Retaxito'); echo $mr_michi->sayMiaw() . " Me adoptó " . $mr_michi_adopted->getAdoptedBy(); } No hay un solo `require` en este archivo y aun así las clases funcionan [9:00]. ## ¿Cómo generar el autoload y ejecutar tu proyecto? Antes de usar la autocarga, ejecuta en la terminal: bash composer du Esto genera la carpeta `vendor` con el archivo `autoload.php` [10:30]. En tu archivo principal `index.php`, el único `require` que necesitas en todo el proyecto es: php <?php require 'vendor/autoload.php'; createMichis(); ### ¿Cómo autocargar archivos individuales con files? Composer también permite cargar archivos sueltos que no son clases, como funciones globales. En `composer.json` agregas la clave `files`: { "autoload": { "psr-4": { "App\\": "App/" }, "files": [ "App/logic/CreateMichis.php" ] } } Cada vez que modifiques `composer.json`, vuelve a ejecutar `composer du` para regenerar el autoloader [11:30]. > **¿Cuándo uso files en lugar de psr-4?** Usa `files` para cargar funciones sueltas o archivos que no contienen clases. Usa `psr-4` para mapear *namespaces* a carpetas con clases. ## ¿Por qué este enfoque es el estándar profesional? Frameworks como **Laravel** usan exactamente esta misma combinación de Composer y PSR-4 para cargar miles de clases sin que el desarrollador tenga que pensarlo [13:00]. Aprender este flujo te prepara para entender cómo funcionan por dentro las herramientas modernas de PHP. La regla de oro queda clara: *namespace* igual a la ruta del archivo y nombre de clase igual al nombre del archivo. Si respetas esto, Composer hace el resto. ¿Ya estás usando Composer en tus proyectos PHP o todavía dependes de `require` manuales? Cuéntalo en los comentarios.