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

# spl_autoload_register

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

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

### Descripción

function spl_autoload_register(?callable `$callback` = `null`, bool `$throw` = `true`, bool `$prepend` = `false`): bool

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().

  function 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.

  Advertencia

  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 #1 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 #2 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 ...

Ejemplo #3 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"

### Ver también

- __autoload() - Intenta cargar una clase sin definir

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open