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. |
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. |
wikipedia |
| PHP |
Le langage que nous allons utiliser.
Si vous ne connaissez pas ce langage, vous trouverez
de nombreuses ressources ici,
si vous désirez installer un serveur il suffit de suivre ce
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 |
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 : |
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 |
php.net 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 |
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. |
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 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 ( exemple)
quelle horreur! En php, débugger peut se révéler bien plus
simple : la plupart de programmeur font de simple echo
ou mieux, des 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 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 :
- base de donnée
- debug
- modèle MVC
- 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 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 éditeur
Une alternative est PHPeclipse, téléchargeable ici
Pour ce qui est de l'installation des serveurs, je vous
recommande de vous simplifier la vie :
Utilisez easy php ou 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.
.
|