spl_autoload_register
(PHP 5 >= 5.1.0, PHP 7)
spl_autoload_register — Enregistre une fonction en tant qu'implémentation de __autoload()
Description
$autoload_function
[, bool $throw
= TRUE
[, bool $prepend
= FALSE
]]] ) : boolspl_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.
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 ...
Version en cache
05/11/2024 07:38:55 Cette version de la page est en cache (à la date du 05/11/2024 07:38:55) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-function.spl-autoload-register.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.