Archivos de carga automática

Cada aplicación consta de una gran cantidad de clases en muchos lugares diferentes. El marco proporciona clases para la funcionalidad principal. Su solicitud tendrá un número de bibliotecas, modelos y otras entidades para que funcione. Es posible que tenga terceros clases que utiliza su proyecto. Realizar un seguimiento de dónde está cada archivo y codificar esa ubicación en sus archivos en una serie de requires() es una tarea enorme. dolor de cabeza y muy propenso a errores. Ahí es donde entran los cargadores automáticos.

Cargador automático de Higgs (IA)

Higgs proporciona un cargador automático muy flexible que se puede utilizar con muy poca configuración. Puede localizar clases con espacios de nombres individuales que se adhieran a PSR-4<https://www.php-fig.org/psr/psr-4/> _ carga automática estructuras de directorios. El cargador automático funciona muy bien por sí solo, pero también puede funcionar con otros cargadores automáticos, como Composer<https://getcomposer.org> _, o incluso sus propios cargadores automáticos personalizados, si es necesario. Porque todos están registrados a través de spl_autoload_register<https://www.php.net/manual/en/function.spl-autoload-register.php> _, Trabajan en secuencia y no se interponen entre sí.

El autocargador siempre está activo, estando registrado con spl_autoload_register() en el inicio de la ejecución del framework.

Importante

You should always be careful about the case of filenames. Many los desarrolladores desarrollan en sistemas de archivos que no distinguen entre mayúsculas y minúsculas en Windows o macOS. Sin embargo, la mayoría de los entornos de servidores utilizan sistemas de archivos que distinguen entre mayúsculas y minúsculas. Si el Las mayúsculas y minúsculas del nombre del archivo son incorrectas, el cargador automático no puede encontrar el archivo en el servidor.

Configuración

La configuración inicial se realiza en app/Config/Autoload.php. Este archivo contiene dos principales matrices: una para el mapa de clases y otra para espacios de nombres compatibles con PSR-4.

Espacios de nombres

El método recomendado para organizar sus clases es crear uno o más espacios de nombres para su archivos de la aplicación. Esto es más importante para cualquier clase relacionada con la lógica empresarial, clases de entidad, etc. La matriz $psr4 en el archivo de configuración le permite asignar el espacio de nombres al directorio esas clases se pueden encontrar en:

<?php

namespace Config;

use Higgs\Config\AutoloadConfig;

class Autoload extends AutoloadConfig
{
    // ...
    public $psr4 = [
        APP_NAMESPACE => APPPATH, // For custom app namespace
        'Config'      => APPPATH . 'Config',
    ];

    // ...
}

La clave de cada fila es el propio espacio de nombres. Esto no necesita una barra diagonal inversa. El valor es la ubicación del directorio en el que se pueden encontrar las clases.

Confirmar espacios de nombres

Puede verificar la configuración del espacio de nombres con el comando spark namespaces:

espacios de nombres de php spark

Espacio de nombres de la aplicación

De forma predeterminada, el directorio de la aplicación es un espacio de nombres del espacio de nombres App. Debes crear un espacio de nombres para los controladores, bibliotecas o modelos en el directorio de la aplicación, y se encontrarán en el espacio de nombres App.

Puede cambiar este espacio de nombres editando el archivo app/Config/Constants.php y configurando el nuevo valor de espacio de nombres bajo la configuración APP_NAMESPACE:

defined('APP_NAMESPACE') || define('APP_NAMESPACE', 'App');

Deberá modificar cualquier archivo existente que haga referencia al espacio de nombres actual.

Importante

Config files are namespaced in the Config namespace, not in App\Config as you might esperar. Esto permite que los archivos principales del sistema siempre puedan ubicarlos, incluso cuando la aplicación El espacio de nombres ha cambiado.

Mapa de clase

Higgs utiliza ampliamente el mapa de clases para obtener los últimos gramos de rendimiento del sistema. al no golpear el sistema de archivos con llamadas adicionales is_file(). Puede utilizar el mapa de clase para vincular a bibliotecas de terceros que no tienen espacios de nombres:

<?php

namespace Config;

use Higgs\Config\AutoloadConfig;

class Autoload extends AutoloadConfig
{
    // ...
    public $classmap = [
        'Markdown' => APPPATH . 'ThirdParty/markdown.php',
    ];

    // ...
}

La clave de cada fila es el nombre de la clase que desea ubicar. El valor es la ruta para ubicarlo.

Soporte para compositores

La compatibilidad con Composer se inicializa automáticamente de forma predeterminada. De forma predeterminada, busca el archivo de carga automática de Composer en ROOTPATH . 'vendor/autoload.php'. Si necesita cambiar la ubicación de ese archivo por algún motivo, puede modificar el valor definido en app/Config/Constants.php.

Nota

If the same namespace is defined in both Higgs and Composer, Higgs’s autoloader will be el primero en tener la oportunidad de localizar el archivo.