Registra a função dada como implementação __autoload()

# spl_autoload_register

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

spl_autoload_register — Registra a função dada como implementação __autoload()

### Descrição

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

Registrar uma função na fila de __autoload fornecida pelo spl. Se a fila ainda não estiver ativada, será ativada.

Se seu código tiver uma função __autoload() existente, então esta função deve ser registrada explicitamente na fila __autoload. Isso ocorre porque spl_autoload_register() substituirá efetivamente o cache do mecanismo para a função __autoload() por spl_autoload() ou spl_autoload_call().

Se houver várias funções de carregamento automático, spl_autoload_register() permite isso. Ele cria efetivamente uma fila de funções de carregamento automático e executa cada uma delas na ordem em que são definidas. Em contraste, __autoload() só pode ser definido uma vez.

### Parâmetros

`callback`

  A função de carregamento automático sendo registrada. Se for `null`, então a implementação padrão de spl_autoload() será registrada.

  function callback(string `$class`): void

  A `class` não conterá a barra invertida inicial de um identificador totalmente qualificado.

`throw`

  Este parâmetro especifica se spl_autoload_register() deve lançar exceções quando o `callback` não pode ser registrado.

  Aviso

  Este parâmetro é ignorado a partir do PHP 8.0.0, e um aviso será emitido se definido como `false`. spl_autoload_register() agora sempre lançará um TypeError em argumentos inválidos.

`prepend`

  Se `true`, spl_autoload_register() irá adicionar o carregador automático na fila de carregamento automático antes de anexá-lo.

### Valor Retornado

Retorna `true` em caso de sucesso ou `false` em caso de falha.

### Registro de Alterações

Versão | Descrição
--- | ---
8.0.0 | `callback` é anulável agora.

### Exemplos

Exemplo #1 spl_autoload_register() como substituição para um __autoload() function

    <?php

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

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

    spl_autoload_register('my_autoloader');

    // Ou, usando uma função anônima
    spl_autoload_register(function ($class) {
        include 'classes/' . $class . '.class.php';
    });

    ?>

Exemplo #2 spl_autoload_register() exemplo onde a classe não é carregada

    <?php

    namespace Foobar;

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

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

    new InexistentClass;

    ?>

O exemplo acima produzirá algo semelhante a:

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

Exemplo #3 O identificador será fornecido sem a barra invertida 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');

    ?>

O exemplo acima produzirá:

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

### Veja Também

- __autoload() - Tenta carregar uma classe indefinida

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