Six require_once, dans un ordre à respecter, et un oubli suffit à tout casser : Gaston en sait quelque chose. Or tous les fichiers suivent la même règle, la classe Article dans src/Article.php. Une règle, ça s'apprend à PHP.
Votre mission
- Enregistrez un autoloader avec
spl_autoload_register(): une fonction qui reçoit le nom d'une classe inconnue et charge le fichier desrc/qui porte ce nom. - Supprimez les
require_oncedes classes : l'autoloader les remplace tous. - Vérifiez que la une s'affiche toujours. Les tests ajouteront même une classe toute neuve dans
src/, pour voir si elle se charge sans rien demander.
Rappel
Quand PHP rencontre une classe qu'il ne connaît pas, il appelle, avant d'abandonner, les fonctions enregistrées par spl_autoload_register(). C'est l'autoload : une classe n'est chargée que si on s'en sert, et l'ordre ne compte plus. La fonction passée ici n'a pas de nom : c'est une fonction anonyme, écrite directement à la place de l'argument : function (string $classe): void { … }. void annonce qu'elle ne renvoie rien. On reverra les fonctions anonymes en détail au chapitre 5.