Un framework web en PHP - Introduction

Découvrez l'architecture globale d'un framework web.

Chose promise chose due, nous commençons avec cette introduction une série d'articles dédiés à l'étude d'un framework web sous PHP. Cette série d'épisodes se propose de voir en profondeur la mécanique sous-jacente à la réalisation d'une application web.
Pour ce faire nous allons utiliser comme référence le framework HONE réalisé par un membre de l'équipe, et sur lequel a été réalisé le site gorenja.com.
Il existe, comme vous le savez, beaucoup de framework sur le marché, aussi l'idée n'est pas de partir dans l'étude de spécificité de telle ou telle solution mais bien de vous livrer du matériel pédagogique que vous pourrez réutiliser dans vos développement.
Sans plus tarder commençons par comprendre comment fonctionne un framework et quelles briques le composent.

Qu'est-ce qu'un framework ?

Pour reprendre la définition de notre bien-aimé Wikipedia, en programmation informatique, un framework est, je cite, un ensemble cohérent de composants logiciels structurels qui sert à créer les fondations ainsi que les grandes lignes de tout ou partie d'un logiciel, c'est-à-dire une architecture.
Il ne s'agit donc pas d'une solution clé en main. On pourrait voir cela comme les fondations d'une maison, ou les arrivées d'eau, d'électricité et autres évacuations ont déjà été réalisées pour vous. Il ne vous reste qu'à vous concentrer sur l'aspect fonctionnel de votre projet.

Pourquoi a-t-on besoin d'un framework ?

Si vous vous attaquez au développement d'une application web vous allez être obligé, comme pour toute application d'ailleurs, de définir votre architecture logicielle. Il faut comprendre par la, poser les bases d'un code mutualise et modulaire, sans quoi, votre code sera impossible à maintenir par un autre que vous, voir par vous-même dans quelques mois.
Par ailleurs, un certain nombre de standards et bonnes pratiques se dégagent et il est toujours bon de les suivre.

L'architecture logicielle

Il existe plusieurs architectures possibles. Dans cette série nous allons étudier la plus connue : le design MVC, comprenez Modèle, Vue, Contrôleur. Nous allons bien sur reprendre chacune de ces briques les unes après les autres. Pour l'instant, disons que l'avantage de cette architecture est de cloisonner les différentes parties du développement selon leur finalité technique ou fonctionnelle. Ainsi le contrôleur peut être comparé au cerveau dans lequel on va implémenter les règles de gestion, le modèle est quant à lui la matérialisation métier du projet dans lequel on retrouvera les entités fonctionnelles (client, produit, etc ...) et enfin la vue sera associée a la sortie écran et au design rendu à l'utilisateur.
Une telle architecture peut faciliter la séparation des taches et ainsi permettre à plusieurs développeurs spécialisés de travailler en parallèle sur un même projet web.

PHP framework web architecture MVC DAO

Le routage

Nous avons évoqué précédemment les 3 briques de base d'une architecture MVC, or sur le schéma ci-dessus, vous en voyez 4. En effet, un routeur, que nous n'avons pas encore évoqué figure tout en haut. A quoi sert-il ?

Le routage constitue la colonne vertébrale d'une architecture MVC. Pour comprendre de quoi il retourne, penchons-nous tout d'abord sur la partie visible de l'iceberg : le lien que vous voyez dans la barre de votre navigateur internet.
Comme vous le savez probablement déjà, un lien de type un_site/une_page.html va vous envoyer vers une page web codée en html. Cette page aura peut-être en elle du code php ou javascript inséré via les balises correspondantes.
Un lien de type un_site/une_page.php va vous envoyer vers une page codée en PHP, qui elle-même, au pire génèrera le code html, et au mieux fera appel à un template généré via un moteur dédié.
Enfin, le cas qui nous intéresse, un lien de type un_site/un_controleur va vous envoyer vers le guichet unique du site en question, à savoir le routeur. Il aura la charge de constater que le contrôleur que vous avez appelé existe et, le cas échéant, de lui passer la main.

Quel est l'intérêt de cette dernière solution ?
Et bien, disons que la granularité du site n'est plus la page, mais on revient vers une organisation beaucoup plus fonctionnelle. Ceci peut vous paraitre encore flou mais nous reviendrons sur ces concepts.

Les contrôleurs

Nous ne l'avons pas encore précisé, mais le développement orienté objet est inhérent à ce type d'architecture. Ainsi, les briques sont des classes, qui elles-mêmes sont instanciées en objet et composées de méthodes. Nous ne sommes ici que dans l'introduction, nous allons donc rester volontairement très superficiel.
Le contrôleur, une fois qu'il aura été appelé par le routeur va gérer la mécanique interne, c'est à dire instancier les modèles, accéder aux données, appliquer les règles de gestion, traiter les actions de l'utilisateur, pour au final, appeler une vue chargée de renvoyer à ce dernier un rendu à l'écran.

Les modèles

Les modèles sont les entités métiers d'un projet. Pour un site e-commerce, cela pourra par exemple être l'entité produit, l'entité client, etc ... Chaque modèle est caractérisé par des attributs (par exemple nom, prénom, code, prix unitaire ...) et des méthodes. Nous y reviendrons plus en détails, aussi dans l'immédiat c'est tout ce qu'il faut savoir.

Les vues

Dernière brique : la vue. Pour faire simple, c'est le rendu qui apparait à l'écran. Une vue est constituée de code html et javascript, elle est appelée par un contrôleur qui aura pris soin de lui passer des paramètres. Nous allons étudier, en ce qui concerne cette partie, le moteur de template Smarty, directement intégré au framework HONE. Pourquoi faire appel à un moteur de template et ne pas générer directement du code html ?
Disons que, s'agissant d'une application web, il y a fort à parier que les pages seront dynamiques. A ce titre elles auront leur mécanique interne, leurs règles de gestion et leurs variables. Les moteurs de template gèrent tout ceci très efficacement, alors pourquoi réinventer la roue ?

Les données

Nous n'avons pas encore évoqué les données. Effectivement, il s'agit d'un gros morceau pour lequel nous étudierons, lors de cette série d'articles, une architectures dédiée (DAO) qui nous permettra de faire abstraction du moteur physique de base de données.

PHP framework web architecture MVC DAO

La suite

Comme vous le voyez, le programme est chargé. Il se veut avant tout pédagogique, par conséquent les concepts seront tous abordés : la programmation orientée objet, le routage, le moteur de template Smarty, etc ...
J’espère que vous prendrez autant de plaisir à découvrir cette série PHP que nous à la rédiger.
Rendez-vous au prochain épisode …


Retrouvez dans la rubrique "Nos datasets" toutes les données dont vous aurez besoin pour tester et pratiquer !