IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Tutoriel de site dynamique - Classes d'abstraction

Tutoriel de site dynamique - Classes d'abstraction


précédentsommairesuivant

I. Introduction

I-A. Remerciements

Je tiens à remercier mathieu, Jérôme Usal et MrDuChnok pour leurs conseils, ainsi bien sûr que Pierre-Baptiste Naigeon pour avoir fourni le tutoriel de départ.

I-B. Prélude

Ce tutoriel traite de l'organisation d'un site Web en séparant au maximum les couches impliquées, ce qui permet de rendre le code aisément maintenable. Je n'ai pas la prétention de mettre des exemples pour toutes les solutions possibles (car elles sont nombreuses). Non, je me contenterai de vous mettre sur la voie en vous donnant un exemple concret.
Avant de commencer, voyons ce que sont les classes d'abstraction et pourquoi il peut être intéressant de les utiliser.
L'article de Pierre-Baptiste Naigeon auquel je me réfère se trouve ici :
https://pbnaigeon.developpez.com/tutoriel/PHP/conception-site-dynamique/

Je ne remettrai absolument pas en cause ses choix. Je me contenterai ici de réécrire son code en utilisant des techniques d'abstraction. La sécurité doit être pensée dès le départ, sous peine d'être inefficace. La réécriture du code que nous allons effectuer serait un bon moment pour y porter son attention mais ce n'est pas mon propos.

I-C. Problématique

Lorsque nous créons un site Web en PHP, nous nous rendons généralement compte qu'il y a deux éléments étrangers au code PHP. Il s'agit de la source de données (fichiers, BDD, etc.) et du destinataire des données (page Web, image, fichier PDF, animation Flash, etc.).
PHP permet de tout gérer mais cela donne un mélange détonnant, dans le code source. C'est malgré tout (et malheureusement) la méthode suivie par un très grand nombre de développeurs.
Les éditeurs de code pallient parfois ce problème en proposant une colorisation syntaxique intelligente. Cependant, c'est peu satisfaisant.

Je propose de réfléchir à séparer toutes les couches : cela aurait le mérite de rendre le code source du site Web plus facile à maintenir.

Il s'agit de déléguer les tâches qui conviennent peu à PHP. C'est un peu comme déléguer la présentation aux feuilles de style plutôt que de tout spécifier dans le code HTML.

Quelles sont les couches d'un site Web, du point de vue du navigateur ?
  • La structure de la page et le contenu (HTML, XHTML, XML, etc.)) ;
  • La présentation du contenu (CSS, XSL, etc.).

Lorsque nous utilisons une feuille de style CSS, nous faisons exactement la même chose que ce que je m'apprête à expliquer : déléguer une tâche.

Quelles sont les couches d'un site Web, du point de vue du serveur ?
  • Les informations brutes : la base de données (MySQL, PostgreSQL, Oracle, etc.) ;
  • Les traitements : le langage de script (PHP, ASP.NET, etc.) ;
  • L'affichage : la page Web affichée par le navigateur (HTML, XHTML, XML, etc.).

Il est clair ici que chaque couche peut être gérée par une technologie ou une autre. Nous allons nous situer dans la couche centrale en utilisant PHP.
Pour nous, les deux autres couches seront des entités abstraites. Nous allons nous détacher des cas particuliers en utilisant des objets qui se chargeront d'effectuer les tâches comme bon leur semble. Comment ils le feront ne sera pas notre préoccupation.

I-D. Que sont les classes d'abstraction ?

Les classes d'abstraction sont les classes qui nous permettent d'instancier les objets que nous allons utiliser.
Dans notre cas, puisque nous avons deux couches desquelles nous souhaitons nous détacher, nous allons utiliser deux classes d'abstraction. En réalité, je donnerai plusieurs exemples de chaque cas pour que vous puissiez faire votre choix, mais l'application finale n'en utilisera qu'une de chaque : il s'agit d'une classe d'abstraction de base de données et d'un moteur de templates.

La classe d'abstraction de la base de données permet d'extraire les informations de la base de données sans utiliser de fonctions spécifiques à un système de gestion de base de données. Nous les demandons, le moteur se charge de les récupérer en fonction du SGBD utilisé.

La classe moteur de gabarit permet d'envoyer nos informations à la page de destination sans à avoir à nous préoccuper de l'organisation de ces informations dans la page de destination. Nous les envoyons, le moteur se charge de les organiser en fonction du gabarit défini.

Je vais en profiter pour présenter une méthode permettant de rendre une application multilingue.

I-E. Arborescence dans le système de fichiers

Pierre-Baptiste a parlé de l'arborescence du menu dans le site. Pour ma part, je vais traiter de l'arborescence des fichiers que nous enregistrons sur le serveur.

Le répertoire du site
  • / - Répertoire racine ;
  • /includes - Répertoire des scripts à inclure ;
  • /language - Répertoire des fichiers de langue ;
  • /templates - Répertoire des différents gabarits

précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.