Enregistre une fonction en tant qu'implémentation de __autoload()

# spl_autoload_register

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

spl_autoload_register — Enregistre une fonction en tant qu'implémentation de __autoload()

### Description

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

spl_autoload_register() enregistre une fonction dans la pile __autoload() fournie. Si la pile n'est pas encore active, elle est activée.

Si le code dispose déjà d'une fonction __autoload(), alors cette fonction doit explicitement enregistrer la pile __autoload. Ceci est dû au fait que spl_autoload_register() remplace le cache du moteur pour la fonction __autoload() par soit spl_autoload(), soit spl_autoload_call().

Si l'on doit utiliser plusieurs fonctions d'autochargement, la fonction spl_autoload_register() est faite pour cela. Elle crée une file d'attente de fonctions d'autochargement, et les exécute les unes après les autres, dans l'ordre où elles ont été définies. A contrario, la fonction __autoload() ne peut être définie qu'une seule fois.

### Liste de paramètres

`callback`

  La fonction d'autoload à enregistrer. Si `null`, alors, l'implémentation par défaut de la fonction spl_autoload() sera enregistrée.

  function callback(string `$class`): void

  La `class` ne contiendra pas le backslash initial d'un identifiant entièrement qualifié.

`throw`

  Ce paramètre spécifie si spl_autoload_register() doit lancer des exceptions lorsque le `callback` n'a pu être enregistré.

  Avertissement

  Ce paramètre est ignoré à partir de PHP 8.0.0, et une notice sera émise s'il est défini à `false`. spl_autoload_register() lancera toujours une TypeError avec des arguments non valides.

`prepend`

  Si ce paramètre vaut `true`, spl_autoload_register() ajoutera la fonction au début de la pile de l'autoloader au lieu de l'ajouter à la fin de la pile.

### Valeurs de retour

Cette fonction retourne `true` en cas de succès ou `false` si une erreur survient.

### Historique

Version | Description
--- | ---
8.0.0 | `callback` est désormais nullable.

### Exemples

Exemple #1 Exemple avec spl_autoload_register() comme remplacement d'une fonction __autoload()

    <?php

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

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

    spl_autoload_register('my_autoloader');

    // Ou, en utilisant une fonction anonyme
    spl_autoload_register(function ($class) {
        include 'classes/' . $class . '.class.php';
    });

    ?>

Exemple #2 Exemple avec spl_autoload_register() où la classe n'est pas chargée

    <?php

    namespace Foobar;

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

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

    new InexistentClass;

    ?>

Résultat de l'exemple ci-dessus est similaire à :

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

Exemple #3 L'identifiant sera fourni sans le backslash initial.

    <?php

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

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

    ?>

L'exemple ci-dessus va afficher :

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

### Voir aussi

- __autoload() - Tente de charger une classe indéfinie

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