Funciones SPL
PHP Manual

spl_autoload_register

(PHP 5 >= 5.1.2)

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

Descripción

bool spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )

Registra una función con la pila __autoload() proporcionada de spl. Si la pila 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 pila __autoload. Esto es porque spl_autoload_register()() de hecho reemplazará la caché del motor para la función __autoload() por spl_autoload()() o spl_autoload_call()().

Si deben haber múltiples funciones de autocarga, spl_autoload_register() lo permitie. De hecho crea una cola de funciones de autocarga y repasa cada una de ellas 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 ser registrada. 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() añadirá al principio el autocargador en la pila de autocarga en vez de añadirlo al final.

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 soporte para espacios de nombre.
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, usando 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\InexistentClass]]
Fatal error: Class 'Foobar\ClaseInexistente' not found in ...

Ver también


Funciones SPL
PHP Manual