comprendre les bases d'un framework en PHP




I. avant propos
I-A. Définitions
I-B. Effectuer des recherches sur internet
I-C. Normes de codage
I-D. Analyse préalable
I-E. Installations


I. avant propos

Le but de ce modeste document n'est pas de vous permettre de créer le framework le plus abouti au monde. Sa seule ambition est de vous apprendre les rudiments d'une programmation saine, en PHP.
Cela va peut être vous sembler bizarre, mais, il ne faut pas (et j'insiste), utiliser le code présenté ci dessous en environnement de production. En effet, il présente des failles de sécurités, notamment au niveau des requêtes SQL.
Comme vous l'avez sûrement deviné, ce document ne s'adresse pas à des utilisateurs chevronnés, mais à des personnes plus ou moins Débutantes. Tout ce qui suit n'est présent que dans un seul et unique but :
Vous aider à comprendre comment fonctionne un framework!
Ainsi, afin de ne pas vous dérouter, nous allons commencer par quelques petites définitions :


I-A. Définitions

De nombreuses notions vont être abordées, au fur et a mesure de votre lecture. Afin de se comprendre au mieux, essayons de partager le même vocabulaire :

terme définition brève (tirées de wikipedia) liens externes
framework Un cadre d'applications (en anglais, Application Framework) informatique ou cadriciel est un ensemble de bibliothèques permettant le développement rapide d'applications. Il fournit suffisamment de briques logiciels pour pouvoir produire une application aboutie. fr wikipedia
template Les templates sont censés permettre une séparation entre le code HTML et le code PHP. On obtient ainsi une structure de site possédant d'un côté les traitements de données (calculs, connexions à des bases de données, sécurité) et de l'autre le « langage » de restitution des données produites (le HTML). Cette séparation facilite le travail en équipe et les mises à jour soit du côté du code PHP soit du côté du code HTML puisque chacune des deux parties peut être modifiée sans affecter l'autre. fr wikipedia
PHP Le langage que nous allons utiliser.
Si vous ne connaissez pas ce langage, vous trouverez de nombreuses ressources fr ici, si vous désirez installer un serveur il suffit de suivre ce fr cours
A savoir : le code PHP est toujours précédé du tag <?php et terminé par ?> si vous omettez ces tags, votre code ne fonctionnera pas
fr wikipedia
dvp.com
MVC Ce modèle d'architecture impose la séparation entre les données, les traitements et la présentation, ce qui donne trois parties fondamentales dans l'application finale : le modèle, la vue et le contrôleur : fr wikipedia
Modèle Le Modèle représente le comportement de l'application : traitements des données, interactions avec la base de données, etc.. Il décrit les données manipulées par l'application et définit les méthodes d'accès.  
vue La Vue correspond à l'interface avec laquelle l'utilisateur interagit. Les résultats renvoyés par le modèle sont dénués de toute présentation mais sont présentés par les vues. Plusieurs vues peuvent afficher les informations d'un même modèle. La vue n'effectue aucun traitement, elle se contente d'afficher les résultats des traitements effectués par le modèle, et de permettre à l'utilisateur d'interagir avec elles.  
contrôleur Le Contrôleur prend en charge la gestion des événements de synchronisation pour mettre à jour la vue ou le modèle. Il n'effectue aucun traitement, ne modifie aucune donnée, il analyse la requête du client et se contente d'appeler le modèle adéquat et de renvoyer la vue correspondant à la demande.  
Bien entendu, ces diverses définitions ne sont pas exhaustives, et de nombreux termes vous apparaîtront probablement obscurs. J'essaierai de les définir, au fur et à mesure, mais que faire, en cas d'oubli de ma part? Et bien tout simplement, il suffit de savoir se servir de l'outil formidable qu'est internet.


I-B. Effectuer des recherches sur internet

En effet, il faut savoir que bien que le forum de dvp.com, que vous ne manquez pas de connaître, j'en suis sur, vous offre une grande satisfaction, la plupart du temps, une simple recherche google peut résoudre votre problème. Cependant, internet ne se limite pas a google, récapitulons les outils a disposition :

ressource commentaire
fr php.net
fr manuel en ligne
Le site php.net est LE réflexe à avoir : vous désirez effectuer un traitement, vous vous doutez qu'une fonction existe?
Et bien, allez sur ce site, tapez, dans la case "search for" un mot anglais étant proche du résultat désiré, et vous verrez qu'au bout de quelques tentatives, vous trouverez votre bonheur.
google Si vous bloquez sur un problème particulier, google vous permettra, relativement souvent de trouver des ressources pouvant vous aider
faq la FAQ PHP De nombreux thèmes y sont abordés, avant de vous lancer dans la création d'un programme, faites en une lecture rapide, vous verrez que vous éviterez bien des erreurs.
fr le forum de dvp.com Si, malgré toutes ces étapes, vous rencontrez toujours des problèmes, n'hésitez pas à vous tourner vers le forum, où de nombreuses personnes sont prêtes à vous aider.
bien entendu, pensez a mettre des titres précis, des extraits de code pas trop longs, et surtout à être clair dans l'exposé de votre problème.

Maintenant que nous savons que faire en cas de bug, essayons de définir une façon uniforme de coder :


I-C. Normes de codage

Cela peut sembler absurde de s'embéter avec de telles broutilles alors qu'il y a tant à apprendre, cependant, je vous recommande de suivre cette norme.
Ces recommandations sont issues du projet PEAR, vous pouvez les retrouver en français fr ici
Utiliser une convention de codage présente divers avantages :
Non seulement, vous vous relisez plus facilement, tout votre code étant présenté de manière uniforme, mais, en plus, le jour où vous posterez un message d'aide sur dvp.com, vous vous rendrez compte que les réponses seront plus rapides, et plus précises.
Sachez que présenter un code clair est une forme de respects envers les autres, imaginez que quelqu'un doit reprendre votre code, laissez le au moins un tantinet lisible...

Apres ce court, mais néanmoins utile paragraphe, passons à l'analyse du projet que nous allons créer :


I-D. Analyse préalable

Rappelons-nous que notre but est de créer un framework en PHP.
Si nous retournons à la définition que nous avons lut plus haut, un framework est en fait un ensemble de briques logicielles permettant de ne pas avoir à programmer a chaque fois les étapes les plus génériques d'un développement. Justement... quelles sont-elles ces différentes étapes?
Réfléchissons un peu... nous voulons faire un site dynamique en PHP... qui dit dynamique, dit données à gérer... nous allons donc avoir besoin d'un gestionnaire de base de données... pourquoi pas MySQL?

Nous avons donc trouvés une de ces fameuses briques : créer des fonctions d'accès aux bases de données.
Cependant, il doit bien en exister d'autres... par exemple, si vous rencontrez un bug... qu'allez vous faire? Passer un débuggeur externe (en exemple) quelle horreur! En php, débugger peut se révéler bien plus simple : la plupart de programmeur font de simple fr echo ou mieux, des fr var_dump.
Cette technique, très utile lors de problèmes ponctuels peut vite devenir un casse tête. C'est décidé! Nous allons implémenter des fonctions facilitant tout cela.
En avons nous terminés?

Et qu'en est-il de ces définitions pompeuses de modèle MVC? Voila! On se l'est pétée, maintenant, on doit assumer! Allez zou! On va aussi implémenter ce fr motif de conception. Pour ce faire, nous allons coder le contrôleur qui, comme son nom l'indique, contrôlera la navigation de l'utilisateur. Il fera appel a des modèles constitués de simples fichiers textes, qui seront rendu "dynamiques" par un moteur de template.
Souvenez-vous, nous avons vu la définition d'un template a coté de ce satané MVC! Si, souvenez vous! C'est lui qui permet de séparer le code PHP des balises HTML! Allons bon! Nous allons donc devoir coder cette chose étrange...

Bon, et bien, ça suffira! Voila donc ce que nous allons faire dans les pages suivantes :

briques à créer :
  1. base de donnée
  2. debug
  3. modèle MVC
  4. moteur de template
Comme vous pouvez le constater, les deux dernières briques ont été inversées, en effet, la partie moteur de template étant la plus complexe, nous ne nous y intéresseront en tout dernier. Cette remarque est valable pour tout ce document : alors que le chapitre base de donnée va se révéler très simple et très commenté, au fur et a mesure de notre avancement, le code présenté sera plus complexe, et les fonctions de base ne seront plus expliquées.


Rendez-vous aux pages suivantes, si ce modeste programme vous tente! Si vous n'avez pas de serveur Web, de base de donnée, ou d'éditeur php installé(s), restez encore un petit moment ici.


I-E. Installations

Commençons par l'éditeur PHP. Si vous travaillez sous Windows, je vous recommande d'utiliser phpEdit 0.8, il a le mérite d'être gratuit.
Pour le télécharger, rendez-vous en ici et choisissez la version "0.8". Si le lien ne marche plus, vous pouvez toujours essayer de le trouver sur le site de son en éditeur
Une alternative est PHPeclipse, téléchargeable en ici
Pour ce qui est de l'installation des serveurs, je vous recommande de vous simplifier la vie :
Utilisez en easy php ou en WAMP.
La différence entre les deux étant que easy PHP vous propose php4 + MySQL 4, alors que WAMP, lui, se base sur PHP5 + MySQL 5.
Si vous étés totalement débutant, choisissez easy php qui est un peu plus simple d'utilisation (dans la création des alias).

Pour ce projet, une fois easy PHP installé, je vous conseil de créer un alias dédié nommé, par exemple, "test"(cette page vous explique entre autre, comment faire).



 

Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2006 . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. .

Cet article devait etre a la base publié sur www.developpez.com