Voici une petite astuce que j’ai découvert il y a un bail maintenant, en essayant de savoir comment Zend Framework faisait pour charger automatiquement ses classes. Il s’agit de la fonction __autoload de PHP.
Sur php.net on peut lire que cette fonction va automatiquement être appelée si une classe n’est pas encore définie au moment de son utilisation. Grâce à elle, vous avez une dernière chance pour inclure une définition de classe, avant que PHP ne déclare une erreur. Pour cela, je vous conseille d’avoir des conventions de nommage même si vous travaillez seul.
On peut prendre l’exemple de Zend Framework où chaque mot du nom de la classe prendra une majuscule et où le tiret bas (underscore en anglais) représentera un dossier. Par exemple la classe Zend_Load_Autoloader qui représente le fichier Zend/Load/Autoloader.php.
Pour ce faire, rajouter en début de votre script un code du type :
function __autoload($class_name) {
require_once (str_replace("_", "/", $class_name).".php");
}
Attention il faut utiliser le chargement automatique de vos classes avec parcimonie. Si vous avez un grand nombre de classes et que seules quelques unes d’entres elles seront chargées alors le chargement automatique des classes PHP est judicieux. Mais si la majorité d’entre elles seront chargées de toute façon, il vaut mieux inclure les fichiers concernés dès le début de votre script. Car __autoload est assez gourmand et ralentira votre script.
Aucun éléphant n’a été maltraité durant ce tutoriel. Voilà c’est tout pour ce tuto, et n’oubliez surtout pas : BI-DOU-ILLEZ !
