Le neveu d'Odette a fait le ménage pendant la nuit. Les publications vivent maintenant dans src/Contenu/Redaction.php, et chaque article a reçu un slug, son nom dans les adresses : la-fete-de-la-citrouille. L'en-tête du journal, lui, est passé dans src/Web/Page.php. Il vous laisse un mot : « index.php n'a plus besoin de tout savoir. Il demande les publications à la rédaction, et la mise en page à Page. »
Depuis son passage, l'aperçu affiche une erreur : index.php fabrique encore ses articles à l'ancienne, sans slug, et le nouveau constructeur d'Article le réclame. Rien à réparer : tout ce code est à remplacer.
Votre mission
- Dans
public/index.php, supprimez les données (le village, le bulletin, les auteurs, le tableau des publications) et tout le HTML de la page. - Construisez la une dans une variable
$html: un<main class="articles">avec leversHtml()de chaque publication deRedaction::publications(). - Affichez-la mise en page par
Page::rendre(), avec le titre'La Gazette de Saint-Glinglin':echo Page::rendre('La Gazette de Saint-Glinglin', $html . '</main>');.
Une fois le ménage fait, la une revient telle qu'elle était. Seul index.php a maigri : une quinzaine de lignes suffisent.
Les trois classes du neveu
Elles sont en lecture seule. Ouvrez-les pour voir ce qu'elles font :
Redactionrange ce que la gazette a publié.Redaction::publications()renvoie les articles et l'annonce.Pagefabrique la page complète.Page::rendre($titre, $contenu)ajoute l'en-tête du journal, la feuille de style et le bulletin autour de votre contenu.Urlconstruit les adresses du site. Vous vous en servirez bientôt.
Inutile de comprendre chaque ligne aujourd'hui. Vous y croiserez deux choses nouvelles :
- un heredoc dans
Page:<<<HTMLouvre une longue chaîne sur plusieurs lignes, qui se termine au motHTML;. Comme entre guillemets doubles, les$variablesy sont remplacées par leur valeur ; self::dansRedaction:self::publications(), c'est la classe qui appelle une de ses propres méthodes statiques.
Rappel
Une méthode statique (public static function) s'appelle sur la classe, sans créer d'objet : Redaction::publications(), avec :: au lieu de ->. Ranger chaque responsabilité dans sa classe rend index.php lisible : il ne fait plus qu'assembler. C'est ce qui va permettre au prochain exercice de servir plusieurs pages.