Site nooSFere

Contrôleurs

Les contrôleurs constituent autant de fonctions d'entrée sur le site, chacun pour restituer une page. Ils ont tous une structure similaire et il est bon de respecter cette structure afin que chacun puisse comprendre rapidement le contenu d'un tel fichier, même s'il n'est pas familier de la section du site à laquelle il appartient.

En-têtes et déclarations

Le fichier doit commencer toujours par une indication d'espace de nommage juste après la balise identifiant un contenu PHP.

<?php

namespace Site\Index;

Bien que cela ne soit pas nécessaire du tout pour le fonctionnement du site, ceci permet d'obtenir une catégorisation claire des différentes fonctions et classes définies dans les différents fichiers. Par convention, \Noo est la racine de l'espace de la Bibliothèque de classes qui se trouve dans le répertoire noo/ et \Site est celui auquel doivent appartenir tous les contrôleurs.

Sitôt après cela vient les inclusions de fichier. Il est normalement nécessaire et suffisant d'écrire les deux lignes suivantes.

require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/config.php';

La première permet d'exploiter le chargement automatique founit par Composer (cf. Espaces de nommage). La second est le chargement explicite du fichier contenant toute la configuration du site.

Il est important d'écrire ces lignes dans cet ordre afin que la configuration puisse exploiter les noms des classes de la bibliothèque.

Suivent les déclarations des classes exploitées dans le contrôleur. Cette liste peut être assez conséquente dans le cas de contrôleurs qui exploitent beaucoup de données différentes, tel celui de la page d'accueil du site.

use Noo\Base\Cyborg\Articles;
use Noo\Base\Cyborg\Auteurs;
use Noo\Base\Cyborg\Critiques;
use Noo\Base\Cyborg\Evenements;
use Noo\Base\Cyborg\Images;
use Noo\Base\Cyborg\Livres;
use Noo\Base\Cyborg\Series;
use Noo\Reponse;

Encore une fois, ceci n'est pas réellement nécessaire, et il est juste d'utiliser Noo\Base\Cyborg\Articles partout où cette interface intervient dans le fichier plutôt d'utiliser la déclaration use Noo\Base\Cyborg\Articles; pour pouvoir ensuite utiliser la forme courte Articles . Toutefois, procéder de cette manière permet une écriture plus concise de la logique du fichier. Et elle donne à voir d'un coup d'œil les dépendances du contrôleur.

Traitements

Le contrôleur le plus simple se contente de retourner des informations statiques. C'est par exemple le cas des pages de la section Asso du site. Mais en général, chacun d'eux puise certaines informations dans les données de la base pour les présenter d'une certaine manière.

Nombre de contrôleurs se basent aussi pour cela de paramètres fournits par l'utilisateur ; identifiant d'un auteur, ordre de tri d'affichage, sélection d'une période… La classe Parametre permet de traiter ces données.

Enfin, plusieurs pages présentent des paramètres ou des éléments d'affichage communs, comme des informations de pagination ou la sélection d'une initiale dans un index. Ces fonctionnalités doivent autant que possible être mutualisées entre les différents contrôleurs, et cela se traduit par des Composants.

Rendu HTML

La dernière étape nécessaire est la construction du rendu de la page demandée. Cela se fait à l'aide de la fonction affiche de la classe Reponse . Cette classe masque la complexité de la configuration du moteur de modèle utilisé et l'utilisation de gabarits écrits en HTML dans lesquels vont d'incruster les données lues et traitées par le contrôleur.

Mais cette classe fournit aussi toutes les réponses plus sommaires qu'il est possible d'envoyer ; une page d'erreur ou une re-direction HTTP.

Search results