Auto-chargement de classes
De nombreux développeurs qui écrivent des applications orientées objet
créent un fichier source par définition de classe. Un des plus gros inconvénients
de cette méthode est d'avoir à écrire une longue liste d'inclusions de
fichier de classes au début de chaque script : une inclusion par classe.
La fonction spl_autoload_register enregistre un nombre quelconque de
chargeurs automatiques, ce qui permet aux classes et aux interfaces d'être
automatiquement chargées si elles ne sont pas définies actuellement.
En enregistrant des autochargeurs, PHP donne une dernière chance d'inclure une
définition de classe ou interface, avant que PHP n'échoue avec une erreur.
Toute construction similaire à des classes peuvent être autochargées de la
même manière. Ceci inclut les classes, interfaces, trait, et énumérations.
Antérieur à PHP 8.0.0, il était possible d'utiliser __autoload
pour autocharger les classes et interfaces. Cependant c'est une alternative
moins flexible à spl_autoload_register et
__autoload est obsolète à partir de PHP 7.2.0,
et supprimée à partir de PHP 8.0.0.
spl_autoload_register peut être appelée plusieurs fois
pour enregistrer plusieurs autochargeur. Lancer une exception depuis une
fonction d'autochargement, interrompra ce processus et ne permet pas aux
fonctions d'autochargement suivantes à être exécutées. Pour cette raison,
lancer des exceptions depuis une fonction d'autochargement est fortement
découragée.
Exemple d'autochargement
Cet exemple tente de charger les classes MaClasse1
et MaClasse2, respectivement depuis les fichiers
MaClasse1.php et
MaClasse2.php.
]]>
Autre exemple d'autochargement
Cet exemple tente de charger l'interface ITest.
]]>
&reftitle.seealso;
unserializeunserialize_callback_funcspl_autoload_registerspl_autoload__autoload