spl_autoload_register

(PHP 5 >= 5.1.0, PHP 7)

spl_autoload_registerRegistrar las funciones dadas como implementación de __autoload()

Descripción

spl_autoload_register ([ callable $autoload_function [, bool $throw = TRUE [, bool $prepend = FALSE ]]] ) : bool

Registra una función con la cola de __autoload proporcionada por spl. Si la cola aún no ha sido activa, será activada.

Si el código contiene una función __autoload() existente, dicha función debe estar explícitamente registrada en la cola de __autoload. Esto es debido a que spl_autoload_register() de hecho reemplazará la caché del motor para la función __autoload() mediante spl_autoload() o spl_autoload_call().

Si deben haber varias funciones de autocarga, spl_autoload_register() lo permite. De hecho, crea una cola de funciones de autocarga y las recorre en el orden en que fueron definidas. Por el contrario, __autoload() sólo puede definirse una vez.

Parámetros

autoload_function

La función de autocarga a registrar. Si no se proporciona ningún parámetro, será registrada la implementación predeterminada de spl_autoload().

throw

Este parámetro especifica si spl_autoload_register() debería lanzar excepciones cuando el parámetro autoload_function no puede ser registrado.

prepend

Si es TRUE, spl_autoload_register() antepondrá el autocargador en la pila de autocarga en vez de posponerlo.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Historial de cambios

Versión Descripción
5.3.0 Se introdujo el soporte para espacios de nombres.
5.3.0 Se añadio el parámetro prepend.

Ejemplos

Ejemplo #1 spl_autoload_register() como sustituto de una función __autoload()

<?php

// function __autoload($clase) {
//     include 'clases/' . $clase . '.clase.php';
// }

function mi_autocargador($clase) {
    include 
'clases/' $clase '.clase.php';
}

spl_autoload_register('mi_autocargador');

// O, utilizar una función anónima, a partir de PHP 5.3.0
spl_autoload_register(function ($clase) {
    include 
'clases/' $clase '.clase.php';
});

?>

Ejemplo #2 Ejemplo de spl_autoload_register() donde la clase no es cargada

<?php

namespace Foobar;

class 
Foo {
    static public function 
test($nombre) {
        print 
'[['$nombre .']]';
    }
}

spl_autoload_register(__NAMESPACE__ .'\Foo::test'); // A partir de PHP 5.3.0

new ClaseInexistente;

?>

El resultado del ejemplo sería algo similar a:

[[Foobar\ClaseInexistente]]
Fatal error: Class 'Foobar\ClaseInexistente' not found in ...

Ver también