Cómo Composer carga clases automáticamente
Clase 29 de 33 • Curso Avanzado de Laravel
Contenido del curso
Entorno de trabajo y repaso de Laravel
Manejo de tu base de datos con Laravel
La terminal de Laravel
Eventos y tareas de Laravel
Manejo de errores
El corazón de Laravel
Creación de paquetes
- 26

Cómo crear paquetes Laravel con Composer
08:51 min - 27
Propiedades para manejo de dependencias
02:02 min - 28
Comprende el archivo composer.json
02:23 min - 29

Cómo Composer carga clases automáticamente
Viendo ahora - 30

Crear mis propios Services Providers
08:58 min - 31

Cómo publicar archivos con Service Provider
04:12 min - 32

Instalando paquetes desde GitHub con Composer
10:35 min - 33

Publicar tu paquete PHP en Packages
03:12 min
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:
<?php
namespace APP\Notifications;
class Aviso {}
// 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.
{
"autoload": {
"psr-4": {
"APP\\": "APP/"
},
"classmap": [
"Database/Seed",
"Database/Factory"
],
"files": [
"APP/helpers.php"
]
}
}
- psr-4: mapea el proveedor APP a la carpeta APP/.
- classmap: carga carpetas completas.
- files: incluye archivos sueltos como helpers.
¿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.