Les espaces de noms

Exercice 4 sur 4 du chapitre 3 · 150 XP · 5 objectifs vérifiés par des tests

Notions abordées : Espace de nomsnamespaceuse

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

  1. En tête de chaque fichier de src/, juste après <?php, déclarez l'espace de noms : namespace Gazette;. La classe Article devient Gazette\Article.
  2. Dans public/index.php, importez les classes avec use Gazette\Article; (et de même pour Annonce, Auteur, Bulletin, Rubrique et Sommaire) : le reste du fichier ne change pas.
  3. L'autoloader reçoit maintenant Gazette\Article : faites-lui retirer le préfixe Gazette\ pour retrouver src/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.