Documentación offline PHP master

spl_autoload_register

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

spl_autoload_register

Registra una función como implementación de __autoload()

Descripción#

spl_autoload_register([callable $callback], [bool $throw], [bool $prepend]): bool
```php

`spl_autoload_register` registra una función en la pila `__autoload` proporcionada. Si la pila no está activa, se activa.

Si el código ya dispone de una función `__autoload`, entonces esta función debe registrar explícitamente la pila \_\_autoload. Esto se debe a que `spl_autoload_register` reemplaza la caché del motor para la función `__autoload` por `spl_autoload` o `spl_autoload_call`.

Si se deben utilizar múltiples funciones de autocarga, la función `spl_autoload_register` está diseñada para ello. Crea una cola de funciones de autocarga y las ejecuta una tras otra, en el orden en que fueron definidas. A diferencia, la función `__autoload` solo puede definirse una vez.

## Parámetros

`callback`  
La función de autoload a registrar. Si es `null`, entonces se registrará la implementación por defecto de la función `spl_autoload`.

```php
callback(string $class): void

El class no contendrá el backslash inicial de un identificador completamente cualificado.

throw
Este parámetro especifica si spl_autoload_register debe lanzar excepciones cuando el callback no ha podido ser registrado.

[!WARNING] Este parámetro es ignorado a partir de PHP 8.0.0, y se emitirá un aviso si se define como false. spl_autoload_register siempre lanzará una TypeError con argumentos no válidos.

prepend
Si este parámetro vale true, spl_autoload_register añadirá la función al principio de la pila del autoloader en lugar de añadirla al final de la pila.

Valores devueltos#

Esta función retorna true en caso de éxito o false si ocurre un error.

Historial de cambios#

Versión Descripción
8.0.0 callback ahora es nullable.

Ejemplos#

Ejemplo con spl_autoload_register como reemplazo de una función __autoload

<?php

// function __autoload($class) {
//     include 'classes/' . $class . '.class.php';
// }

function my_autoloader($class) {
    include 'classes/' . $class . '.class.php';
}

spl_autoload_register('my_autoloader');

// O, utilizando una función anónima
spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.class.php';
});

?>

Ejemplo con spl_autoload_register donde la clase no es cargada

<?php

namespace Foobar;

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

spl_autoload_register(__NAMESPACE__ .'\Foo::test');

new InexistentClass;

?>

Resultado del ejemplo anterior es similar a:

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

El identificador será proporcionado sin el backslash inicial.

<?php

spl_autoload_register(static function ($class) {
    var_dump($class);
});

class_exists('RelativeName');
class_exists('RelativeName\\WithNamespace');
class_exists('\\AbsoluteName');
class_exists('\\AbsoluteName\\WithNamespace');

?>

El ejemplo anterior mostrará:

string(12) "RelativeName"
string(26) "RelativeName\WithNamespace"
string(12) "AbsoluteName"
string(26) "AbsoluteName\WithNamespace"

Véase también#

__autoload