__AUTOLOAD |
Chargeur automatique |
5 à 7.2 |
Syntaxe
function __autoload($class);
|
Paramètres
Nom |
Description |
$class |
Ce paramètre permet d'indiquer le nom de la classe à charger. |
Description
Cette fonction permet d'effectuer le chargement spécifié d'une classe n'étant pas définie.
Remarques
- Obsolescence de __autoload : La fonction __autoload est obsolète depuis PHP 7.2 et a été officiellement supprimée dans PHP 8.0. Elle a été remplacée par
la fonction plus flexible spl_autoload_register, permettant d'enregistrer plusieurs autoloadeurs. Si votre code utilise encore __autoload, il est fortement recommandé
de le mettre à jour.
- Limitation à un seul autoloader : Contrairement à spl_autoload_register, permettant d'enregistrer plusieurs fonctions d'autoload, __autoload ne
supportait qu'un seul autoloader. Cela rendait son utilisation restrictive, notamment dans des projets nécessitant plusieurs autoloaders pour des bibliothèques ou
cadres d'applications différents.
- Manque de flexibilité : Avec __autoload, il était difficile de gérer des cas spécifiques comme charger des classes de plusieurs répertoires ou appliquer
des règles de cartographies complexes entre noms de classes et fichiers. Cela limitait son utilité dans des projets modernes utilisant des standards comme PSR-4.
- Compatibilité avec les cadres d'applications modernes : La plupart des cadres d'applications PHP modernes, comme
Laravel, Symfony ou Zend Framework,
utilisent des autoloaders conformes au standard PSR-4. Ces autoloaders s'appuient sur spl_autoload_register, rendant __autoload incompatible avec ces
cadres d'applications.
- Problèmes avec Composer : Composer, le gestionnaire de dépendances standard en PHP, génère automatiquement un fichier autoload.php basé
sur spl_autoload_register. Utiliser __autoload dans un projet dépendant de Composer peut provoquer des conflits ou empêcher certains chargements automatiques
de fonctionner correctement.
- Difficulté de débogage : Avec __autoload, il pouvait être difficile de localiser la source des erreurs lorsque le chargement automatique d'une classe
échouait. spl_autoload_register, en revanche, permet d'utiliser plusieurs autoloaders et d'ajouter des journaux de bords ou des points de contrôle pour déboguer plus
facilement.
- Impact sur la lisibilité du code : La fonction __autoload, souvent définie dans des fichiers séparés ou dans le bootstrap d'une application,
pouvait rendre la structure du projet confuse, surtout dans des projets utilisant plusieurs standards. spl_autoload_register centralise mieux les autoloaders, améliorant la
lisibilité et l'organisation.
- Standardisation et futur de PHP : La dépréciation de __autoload reflète une volonté de PHP de se rapprocher des standards modernes et de renforcer
l'interopérabilité. En adoptant des pratiques comme spl_autoload_register et PSR-4, PHP offre une meilleure cohérence avec l'écosystème des développeurs et
des outils tiers.
Dernière mise à jour : Dimanche, le 17 mars 2019