COURS PHP

  Dernière mise à jour effectuée le : Dimanche 10 août 2003    

Accueil | Structure d'un programme

Structure d'un programme
Ecrire un programme ne relève pas de la magie, loin de là. Mais ça reste quand même très simple pour peu que l'on observe quelques règles fondamentales.



Généralités

Nous avons déjà vu combien il était important en HTML, de faire preuve d'une rigueur au dessus de tout soupçons.
En PHP, c'est encore plus vrai. Si certains interpréteurs HTML (les navigateurs de dernière génération) sont capables de faire l'impasse sur des tags mal ficelés, il n'en va pas de même avec PHP qui est un véritable langage informatique.

Le moindre point manquant, le moindre point virgule (surtout lui) oubliée , la moindre accolade manquante ou en trop, fera invariablement "planter" le programme que nous aurons eu tant de mal à mettre au point. Ce qui est parfaitement insupportable, bien entendu.

C'est pour ça que je ne saurais trop insister lourdement sur les quelques recommandations déjà faites au long de ce cours. Rigueur, méthode, soin, attention, précision poussée à la limite du supportable.

 



Recommandations

Comme nous l'avons déjà vu, un programme PHP se compose de plusieurs éléments (autant qu'on pourra en imaginer) que nous avons appelé des "Fonctions". Ces petits employés laborieux chargés d'accomplir les tâches pour lesquelles ils ont été programmés. La principale qualité de ces petits employés laborieux, est qu'ils sont capables de faire ce pour quoi ils sont faits, sans tenir compte de "qui" leur demande de le faire. Si bien qu'un autre petit employé laborieux, pourra faire appel à un de ses collègues pour faire une chose que lui, ne sait pas faire. Et ceci, quasiment à l'infini.

Ce qui est bien pratique, mais en même temps très dangereux, car à la fin, si tout le monde donne des ordres à tout le monde, on ne sait plus qui commande.
La tentative est grande, avec un langage objet, d'écrire une multitude de fonctions dans tous les coins, et de les utiliser à "la sauvage", n'importe quand et n'importe comment. De les appeler et de les faire s'appeler les unes par les autres. Ceci fonctionne très bien tant que l'on n'a pas développé un trop grand nombre de fonctions. Mais dès que l'on dépasse une certain stade critique, on perd vite le fil, et on risque de faire des boucles récurrentes infinies en faisant appeler une fonction par une autre qui ré-appelle la première.
Si bien qu'il est sage, de créer des fonctions qui feront office de contre-maîtres, gérant à elles seules plusieurs fonctions indépendantes, et de faire superviser le tout par une sorte de directeur de l'usine, ou un comité de direction entier, de sorte que les tâches soient bien réparties, et le travail bien fait.
On appelle ce genre de programme un "Maître" Programme. Ou en anglais "Main Program". Le programme principal.

 



Structuration

En ce qui concerne la structure même du programme, c'est à dire ses parties et comment elles s'organisent ensembles, là encore j'ai mes marottes. mais comme elles sont le fruit d'une longue expérience et qu'elles m'ont toujours données entière satifaction, je vous les livre quand même. Vous en ferez évidemment ce que vous voudrez mais vous verrez, elles sont sages.
En ce qui concerne les variables (vous savez, ces trucs qui servent à stocker des choses ...) je ne saurai trop vous recommander de toujours leur donner un nom représentatif de leur contenu. Evitez les "toto", "titi", tata" chers aux programmeurs d'antan. Ca marche, mais ça n'est pas très lisible.

Come nous sommes sir l'internet, que nous écrivons des programmes qui vont gérer des tonnes de choses, nous n'avons pas à nous préoccuper de la taille mémoir disponible, non plus que du temps que met un programme à s'exécuter. Si nous écrivions des programmes de pilotage automatique de missiles ballistiques, il faudrait faire attention à la moindre micro sconde de décalage. Là, on s'en fiche un peu. Alors, n'hésitez pas à mettre des commentaires, écrire des instructions claires, déclarer vos variables en global (ça ne mange pas de pain). Evitez les "siouxeries" attirantes et valorisantes pour l'esprit, mais déplorables dans du code source.
Pensez que votre programme, vous pourriez être amené à le retoucher dans deux, trois, voirs quatre ou cinq ans, et que si vous avez utilisé des "astuces de sioux", vous n'arriverez même plus à vous souvenir de ce que vous aviez voulu faire à l'époque. Et vous serez obligé de tout recomencer pour faire une modif somme toute bien maigre au départ.

Dans tout programme, je propose de le découper en zones bien distinctes :

// Commentaires généraux

Là, vous dites à quoi ça sert, qui l'a écrit, quand et la date de dernière modif et par qui. Au besoin, quelq autres programmes se servent de lui. Quand on écrit des programmes de plus de sept ou huit mille lignes, on est bien content de trouver ça quand on ne se souvient plus qui se sert de qui.

// Zone des variables

Ici, vous déclarez les variables et les constantes dont vous aurez besoin au cours de l'éxcution du programme, avec des noms significatifs et ds commentaires pour dire à quoi sert telle ou telle variable.

// Zone des fonctions principales

Ici, vous écrivez les fonctions qui en appellent d'autres. Ce que nous avons appelé les "Contre Maîtres" ou "Main Program". Ce sont des fonctions qui sont elles mêmes déclenchées par vous ou par un événement quelconque.

// Zone des fonctions secondaires

Ici, vous écrivez les fonctions dont toutes les autres vont se servir. Les petits ouvriers bien laborieux qui effectueront les tâches élémentaires. Souvenez-vous toujours qu'il est nécessaire d'écrire une fonction pour faire quelque chose si cette chose doit être faite plus d'une fois. En clair, lorsque par exemple il faut vérifier si un champ d'un formulaire a bien été rempli par l'utilisateur, écrivez le petit programme qui effectue cette vérification dans sune fonction secondaire. Ainsi, lorsque vous aurez à vérifier si un autre champ a bien été rempli, vous n'aurez qu'à rppeler cette fonction au lieu d'écrire deuc fois la même suite d'instructions dans le programme principal. Vous voyez ce que je veux dire ?

// Zone de réserve

Ici, j'ai coutume de stocker des instructions ou des bouts de fonctions (sous forme de commentaire bien sûr) qui me servent à faire des tests, des essais, ou vérifier le contenu d'une variable à un moment donné. Un peu mon placard aux trésors. Dans le style "Je ne jette rien. On ne sait jamais, ça peut toujours servir". Vous savez, comme ces boîtes à malice de nos grand mères dans lesquelles on jette pêle mêle le bouton trouvé, la vis qui ne sert plus, le bout de ficelle inutile. Puis un jour, quand on a besoin de quelque chose, on le trouve forcément dans cette boîte à malice.
C'est dans cette zone de réserve que je viens souvent repiquer une instruction réutilisable ou un "print()" quelquechose dont j'ai besoin. Ca m'évite d'avoir à le re-taper :-)

Bref en définitive, votre programme devrait avoir la tête suivante :

// Commentaires généraux
//...
//...

// Zone des variables
...
...
...

// Zone des fonctions principales
function Principale1( ) {

}

function Principale2( ) {

}

// Zone des fonctions secondaires
function Secondaire1( ) {

}

function Secondaire2( ) {

}

// Zone de réserve
/...
/...
/...

 

 



Emplacement du code PHP

Là, tout dépend de ce que fait ce code. Si les instructions doivent être éxécutées immédiatement au chargement de la page dans le navigateur du client, et si elles ne sont utilisables que par cette page HTML et par aucune autre, il est parfois intgéressant de les mettre dans la page elle même.
Par contre, si ce sont des instructions qui peuvent être réutilisées par plusieurs pages différentes, il y a tout intérêt à les mettre dans un programme séparé appelé par la page HTML au bon endroit par les fameuses instruction include() ou require().

 



Ce cours est enseigné par Philippe Médan 
dans le cadre de la formation des professionnels de l'INTERNET.
au CREFAC , 14 rue Scandicci, 93000 Pantin. Tél. : 01 48 46 51 99
au GITA-GRETA , Lycée Technologique Diderot 61, rue David D'Angers 75019 Paris Tél. : 01 40 40 36 27
au CESI à l'Ecole des ingénieurs, 116 Av Aristide Briand, BP 57, 92224 Bagneux CEDEX Tél. : 01 45 36 70 00

© Philippe Médan 1999-2003. Tous droits de reproduction réservés pour tous pays.