Cómo Composer carga clases automáticamente

Clase 29 de 33Curso Avanzado de Laravel

Contenido del curso

Laravel y Base de Datos

    Resumen

    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.