LaravelConf Taiwan 2020 CFP Started

spl_autoload_register

(PHP 5 >= 5.1.0, PHP 7)

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

Description

spl_autoload_register ([ callable $autoload_function [, 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 votre code dispose déjà d'une fonction __autoload(), alors cette fonction doit explicitement enregistrer la pile __autoload. Ceci est du au fait que spl_autoload_register() remplace le cache du moteur pour la fonction __autoload() par soit spl_autoload(), soit spl_autoload_call().

Si vous devez 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

autoload_function

La fonction __autoload() à enregistrer. Si aucun paramètre n'est fourni, alors, l'implémentation par défaut de la fonction spl_autoload() sera enregistrée.

throw

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

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
5.3.0 Ajout du support des espaces de noms.
5.3.0 Le paramètre prepend a été ajouté.

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 à partir de PHP 5.3.0
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($name) {
        print 
'[['$name .']]';
    }
}

spl_autoload_register(__NAMESPACE__ .'\Foo::test'); // Depuis PHP 5.3.0

new InexistentClass;

?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

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

Voir aussi

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top