Le neveu d'Odette veut ajouter au site un petit module trouvé sur Internet. Problème : il contient lui aussi une classe Article. Deux classes du même nom, et PHP refuse de choisir. Les vrais projets rangent leurs classes sous un espace de noms, comme un nom de famille.
Votre mission
- En tête de chaque fichier de
src/, juste après<?php, déclarez l'espace de noms :namespace Gazette;. La classeArticledevientGazette\Article. - Dans
public/index.php, importez les classes avecuse Gazette\Article;(et de même pourAnnonce,Auteur,Bulletin,RubriqueetSommaire) : le reste du fichier ne change pas. - L'autoloader reçoit maintenant
Gazette\Article: faites-lui retirer le préfixeGazette\pour retrouversrc/Article.php.
Rappel
Un espace de noms préfixe les classes, comme un dossier préfixe un fichier : Gazette\Article et Module\Article peuvent vivre ensemble. use donne un nom court à une classe d'un autre espace de noms. Dans une chaîne PHP, l'antislash s'écrit doublé : 'Gazette\\'. Pour retirer le préfixe, str_starts_with($classe, 'Gazette\\') dit si le nom commence par lui, strlen('Gazette\\') compte ses caractères, et substr($classe, 8) garde ce qui suit le 8ᵉ caractère.