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.
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'));
}
}
Este componente no define opciones de configuración, ya que es una interfaz.
-
__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')); }
Consulte el Inicio rápido para ver un ejemplo completo.