Introduction
Il existe plusieurs méthodes de charger ses classes PHP.
Soit en les appelant une par une avec un « include » ou en les mettant toutes dans 1 seul et même fichiers.
La première méthode reste correcte, mais elle est néanmoins ennuyante.
La seconde méthode est plutôt radicale, mais un peu trop brouillonne.
Mais heureusement, il existe une autre méthode: l’« autoloader ».
Cette troisième et dernière méthode permet de charger automatiquement les fichiers de classes PHP utilisés.
L’autoloader
L’autoloader prend quelques lignes et il est pratique.
Et vous évite aussi d’oublier de charger vos classes !
Exemple d’un autoloader en PHP:
<?php class autoloader{ static function register(){ spl_autoload_register(array(__CLASS__, 'autoload')); } static function autoload($class_name){ $class_name = str_replace('\\', '/', $class_name); require $class_name.".class.php"; } } ?>
Dans le bout de code ci-dessus la méthode « autoload » va aller chercher le fichier de la classe.
A la ligne 8 l’antislashs (séparant le nom du « namespace » et la méthode) est remplacé par un slash.
Bien évidemment, le nom du fichier portera le nom de la classe suivi de la double extension « .class.php » (pensez respecter les majuscules et minuscules).
Avec cette classe vous devrez créer un sous-dossier contenant le nom du « namespace » dans votre dossier « class » (si vous en utilisez).
Pour utiliser la classe vous devez faire un « require » et appeler à la méthode à la bonne place comme ci-dessous:
<?php require_once "class/autoload.class.php"; autoloader::register(); ?>
L’emplacement où vous allez placer ces 2 dernières petites lignes dépend de la manière dont vous avez construit votre projet.
Allez plus loin !
Vous pouvez adapter facilement le code PHP pour charger automatiquement les modèles et les classes (si vous séparez vos « Models » et « class » dans votre projet).
Pour cela, il suffit de retirer la fameuse double extension (« .class.php » -> « .php »).
Puis d’utiliser les espaces noms (« namespaces ») dans vos codes !