TigerZF
🌐Español

42.5. La interfaz SplAutoloader

42.5.1. Resumen

Aunque cualquier callback de PHP válido puede registrarse con spl_autoload_register(), los autoloaders de Zend Framework a menudo proporcionan más flexibilidad al ser con estado y permitir configuración. Para proporcionar una interfaz común, Zend Framework ofrece la interfaz SplAutoloader.

Los objetos que implementan esta interfaz proporcionan un mecanismo estándar de configuración, un método que puede invocarse para intentar cargar una clase, y un método para registrarse con el mecanismo de autocarga de SPL.

42.5.2. Inicio rápido

Para crear su propio mecanismo de autocarga, simplemente cree una clase que implemente la interfaz SplAutoloader (puede revisar los métodos definidos en la sección de Métodos). Como ejemplo sencillo, considere el siguiente autoloader, que buscará un archivo de clase con el nombre de la clase dentro de una lista de directorios registrados.

require_once 'Zend/Loader/SplAutoloader.php';

class Custom_ModifiedIncludePathAutoloader implements Zend_Loader_SplAutoloader
{
    protected $paths = array();

    public function __construct($options = null)
    {
        if (null !== $options) {
            $this->setOptions($options);
        }
    }

    public function setOptions($options)
    {
        if (!is_array($options) && !($options instanceof Traversable)) {
            throw new InvalidArgumentException();
        }

        foreach ($options as $path) {
            if (!in_array($path, $this->paths)) {
                $this->paths[] = $path;
            }
        }
        return $this;
    }

    public function autoload($classname)
    {
        $filename = $classname . '.php';
        foreach ($this->paths as $path) {
            $test = $path . DIRECTORY_SEPARATOR . $filename;
            if (file_exists($test)) {
                return include($test);
            }
        }
        return false;
    }

    public function register()
    {
        spl_autoload_register(array($this, 'autoload'));
    }
}

42.5.3. Opciones de configuración

Este componente no define opciones de configuración, ya que es una interfaz.

42.5.4. Métodos disponibles

__construct($options = null);

Inicializa y configura un autoloader

Los constructores de los autoloaders deben recibir opcionalmente opciones de configuración. Normalmente, si se reciben, se pasarán al método setOptions() para procesarlas.

setOptions($options);

Configura el estado del autoloader

Se utiliza para configurar el autoloader. Normalmente, debería esperar un array o un objeto Traversable, aunque la validación de las opciones se deja a la implementación. Además, se recomienda que el método devuelva la instancia del autoloader para implementar una interfaz fluida.

autoload($classname);

Intenta resolver un nombre de clase al archivo que la define

Este método debe usarse para resolver un nombre de clase al archivo que la define. Cuando se encuentra una coincidencia positiva, devuelve el nombre de la clase; de lo contrario, devuelve un booleano false.

register();

Registra el autoloader con el autoloader de SPL

Debe usarse para registrar la instancia del autoloader con spl_autoload_register(). Invariablemente, el método debería tener el siguiente aspecto:

public function register()
{
    spl_autoload_register(array($this, 'autoload'));
}

42.5.5. Ejemplos

Consulte el Inicio rápido para ver un ejemplo completo.