La autocarga de clases en PHP puede ser simple y ordenada si configuras bien Composer. Aquí verás, con claridad y paso a paso, cómo Composer usa la especificación PCR cuatro para cargar clases sin require manuales, cómo aprovechar Classmap y files, y cómo preparar un paquete para Laravel apuntando a tu carpeta source.
¿Cómo funciona la autocarga con Composer y PCR cuatro?
Composer implementa PCR cuatro, una especificación interoperable que define cómo mapear namespaces, clases y carpetas para que las clases se carguen automáticamente. El objetivo: no escribir require cada vez que usas una clase y mantener una estructura clara.
PCR cuatro es una especificación de carga automática interoperable.
Composer también puede trabajar con PCR cero.
La ruta completa del namespace sigue: proveedor → subnamespaces (carpetas) → nombre de la clase.
Todo se configura en composer.json, dentro de la clave autoload.
¿Qué estructura de namespace y clases exige el proveedor?
La estructura parte del proveedor (por ejemplo, APP), seguido de subcarpetas y el nombre de la clase. Así, si el archivo está en APP/Notifications, la clase declara su namespace como APP\Notifications y podrás usarla sin require manual.
Proveedor: APP.
Subnamespace: Notifications.
Uso: APP\Notifications\NombreDeLaClase.
Ejemplo de definición y uso mínimo en PHP:
<?phpnamespaceAPP\Notifications;classAviso{}// En cualquier parte del proyecto, tras ejecutar el autoload de Composer:$notificacion=new\APP\Notifications\Aviso();
¿Cómo se configura autoload en composer.json?
La configuración vive en la clave autoload. Con PCR cuatro, indicas el proveedor y la carpeta base. Además, puedes combinar con Classmap y files para cubrir casos sin namespace o utilidades globales.
¿Qué opciones extra ofrece Composer: classmap y files?
Además de PCR cuatro, Composer permite cargar carpetas enteras o archivos individuales. Esto es útil para código sin namespace o para utilidades globales.
Classmap: ideal para carpetas como Database Seed y Database Factory.
No requieren namespace: Composer las indexa y las hace disponibles.
Files: perfecto para helpers ubicados en APP/helpers.php.
¿Cómo se integran helpers sin namespace?
Si defines un archivo de utilidades, puedes declararlo en files. Composer lo incluirá automáticamente, dejándolo listo para usar en todo el proyecto.
Archivo: APP/helpers.php.
Beneficio: funciones disponibles sin require.
Práctico para utilidades transversales.
¿Cómo usar un paquete propio en Laravel con PCR cuatro?
Para un paquete, debes mapear tu carpeta source a un namespace proveedor. Por ejemplo, definir "laravel s" como proveedor que apunta a source, de modo que tus clases se levanten con PCR cuatro. Después, Composer generará el archivo necesario para que Laravel encuentre las clases.
Define el proveedor del paquete: "laravel s".
Carpeta base del paquete: source.
Composer genera un archivo llamado autoloadad.php dentro de vendor.
Laravel lo utiliza en index.php para exponer todas las clases de la aplicación.
Próximo paso lógico: crear service providers para incluir el paquete en Laravel.
Habilidades y keywords trabajadas: configuración de composer.json, uso de autoload, PCR cuatro y PCR cero, definición de namespaces y proveedor, mapeo de Classmap, inclusión de files como helpers, estructura de APP y subnamespaces como Notifications, carpetas Database Seed y Database Factory, generación de vendor/autoloadad.php, y preparación de paquetes para Laravel.
¿Tienes dudas sobre cómo mapear tu estructura o nombrar el proveedor? Comparte tu caso y lo revisamos juntos.