Exemples :
Dans le premier exemple (code non indenté), il est difficile de voir clairement l'imbrication du second if dans le
premier.
C'est beaucoup plus aisé dans le deuxième exemple (code indenté).
Nommer ses variables
Quelques conseils :
•
En PHP, ne pas oublier qu'une variable commence par le
symbole $.
•
Utiliser des minuscules (quelques majuscules sont autorisées [voir
exemples plus bas]).
•
Choisir des noms de variables explicites.
Bons noms de variables :
•
$datenaissance
•
$montantHTVA
•
$nomDuJoueur
Mauvais noms de
variables :
•
compteur (il
manque le $)
•
$AGEDUCAPITAINE (ne
pas utiliser uniquement des majuscules).
•
$ttpic (kezako
?)
Dupliquer avant de modifier
Avant de modifier le code source de votre programme, faites-en une copie !
Il est fréquent qu'on se lance dans des modifications et qu'on ne sache plus ce qu'on a ajouté / retiré / modifié. Il
est alors pratique de pouvoir reprendre la dernière bonne version sauvegardée .
Se documenter
Quand on programme, il est nécessaire de disposer d'une bonne documentation du
langage. Ce peut être :
•
l'adresse de sites
web de référence (http://php.net/ par exemple),
•
l'adresse de communautés
de programmeurs utilisant le langage (http://php.developpez.com/),
•
des mémos (http://www.eyrolles.com/Informatique/Livre/memento-industrialisation-php-5-9782212134803),
•
des livres.
Tester, tester, tester
Je dirais même plus : « Tester !
» :-)
Beaucoup de programmes sont mis en production trop rapidement
et ne sont pas passés par une phase de tests
suffisante.
Ne soyez pas pressé(e) : testez
vos réalisations. Mettez-vous à la place de l'utilisateur et demandez-vous ce
qu'il ferait dans telle ou telle situation. Essayez aussi de « planter » le
programme : cela vous permettra de faire face à une mauvaise utilisation par
vos clients.
Quiz
Il faut commenter son
code...
Pour
soi, les autres se débrouilleront !
Pour
les autres, nous, nous savons ce que nous avons écrit, non ?
Pour
soi et pour les autres.
Indenter son code
signifie...
Le
positionner de manière logique par rapport aux instructions.
Le
positionner en dent de scie, une fois en retrait, une fois pas, une fois en
retrait...
Supprimer
tous les espaces superflus.
La seule bonne façon
d'écrire une variable est...
nombreArticlesAchetes
$nombreArticlesAchetés
$naa
$nombreArticlesAchetes
$nombre
d'articles achetés
Avant d'opérer des changements
dans mon code source...
Je
fais une prière.
Je
prends une grande inspiration.
J'en
fais une copie : on ne sait jamais !
Mon
code est parfait du premier coup !
Le débogage
Nous avons pris les plus grandes sécurités. Nous avons respecté les
conseils des programmeurs les plus chevronnés. Mais, patatra, lors de
l'exécution de notre programme, des
erreurs se produisent.
Comment déboguer un code source PHP ?
C'est ce que nous allons voir dans les points suivants...
Les mouchards
Si le programme ne fonctionne pas comme prévu, c'est peut-être
parce que certaines variables ne
contiennent pas les données attendues.
Il est courant de vérifier
que des variables contiennent bien l'information requise en
affichant leur contenu au moyen d'instructions telles que echo et print_r.
Exemple :
$boite1 =
"rien";
$boite2 =
"balle";
$boite2 =
$boite1;
$boite1 =
$boite2;
echo "Dans
la boîte 1, il y a ".$boite1;
echo "Dans
la boîte 2, il y a ".$boite2;
Ce
petit programme ne fonctionne pas ! L'échange des deux
contenus des boîtes n'aboutit pas au résultat attendu.
Ajoutons un mouchard pour voir ce qui se passe :
$boite1 =
"rien";
$boite2 =
"balle";
$boite2 =
$boite1;
echo
$boite1." ".$boite2; // affichons les contenus à ce point
$boite1 =
$boite2;
echo $boite1."
".$boite2; // affichons les contenus à ce point
echo "Dans
la boîte 1, il y a ".$boite1;
echo "Dans
la boîte 2, il y a ".$boite2;
Ce
qui donne :
Voyez-vous comment
résoudre ce souci ?
Ce script échange le contenu des variables
$boite1 et $boite2. Malheureusement, ça ne fonctionne pas. Parviendrez-vous à
corriger le code pour que cela fonctionne ? <?php
$boite1 = "rien";
$boite2 = "balle";
$boite2 = $boite1;
echo $boite1." ".$boite2; //
affichons les contenus à ce point
$boite1 = $boite2;
echo $boite1." ".$boite2; //
affichons les contenus à ce point
echo "Dans la boîte 1, il y a
".$boite1;
echo "Dans la boîte 2, il y a
".$boite2;
?> <?php
$boite1 = "rien";
$boite2 = "balle";
$boite3 = $boite1; // Hé oui, il faut
passer par une boite (variable) intermédiaire ;-)
$boite1 = $boite2;
$boite2 = $boite3;
echo "Dans la boîte 1, il y a
".$boite1;
echo "Dans la boîte 2, il y a
".$boite2;
?> La fonction print_r()
Pour afficher des informations, echo s'en
sort pas mal. Mais quand il s'agit d'afficher le contenu d'un tableau... rien
ne va plus.
Exemple de programme essayant d'afficher
le contenu d'un tableau avec la commande echo :
$tableau=array("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");
echo $tableau;
Résultat affiché :
Array
Bref, rien de très intéressant comme
information retournée.
Essayons maintenant avec la fonction print_r :
$tableau=array("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");
print_r($tableau);
Résultat affiché :
Array ( [0] =>
Lundi [1] => Mardi [2] => Mercredi [3] => Jeudi [4] => Vendredi [5]
=> Samedi [6] => Dimanche )
C'est quand même mieux, non ? Utilisez la fonction
print_r pour afficher le contenu du tableau.
<?php
$tableau=array("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");
echo $tableau;
?> <?php
$tableau=array("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");
print_r($tableau);
?> La fonction var_dump
Et vous savez quoi ?
Il y a encore mieux : la fonction var_dump !
Non seulement elle affiche
le contenu d'une variable mais, en plus, elle
donne des informations sur son type(voire plus).
Et comme un exemple vaut mieux qu'un long
discours :
$mot="anticonstitutionnellement";
var_dump($mot);
Ce qui affichera :
string(25) "anticonstitutionnellement"
Wouaw ! Trois informations pour le prix d'une :
•
Le type de la variable : string pour chaîne
de caractères.
•
La longueur de la
variable : 25 caractères.
•
Le contenu de la variable :
anticonstitutionnellement.
Utilisez la fonction var_dump pour afficher
le contenu et les informations concernant la variable.
<?php
$mot="anticonstitutionnellement";
echo $mot;
?>
<?php
$mot="anticonstitutionnellement";
var_dump($mot);
?> Messages d'erreur
Dans le meilleur des cas, quand un programme ne fonctionnera
pas, un message d'erreur
s'affichera.
Malheureusement, ce sera rarement un message du type Vous avez oublié de mettre le symbole dollar à la variable cpt
de la ligne 39. Hélas.
Mais ce sera quelque chose d'assez approchant comme, par exemple :
Parse error:
syntax error, unexpected '=' in
/var/www/demo.expert-it.com/tftic/php_cours/results/result_f49a8245660f2d82850743a8a925930e.php
on line 3
Pour bien
comprendre ces messages, il sera intéressant de posséder quelques
notions d'anglais technique.
Si vous ne comprenez rien à l'anglais, contentez-vous de remarquer
que, dans l'exemple du dessus, l'erreur
s'est produite à la ligne 3 (fin du message).
Mais ce serait mieux d'apprendre un peu d'anglais (ou d'utiliser
un traducteur en ligne par exemple).
Fausse piste ?
Remarque importante :
une erreur de syntaxe (par exemple) sur une certaine ligne peut générer un problème sur une autre ligne. Vous
pourriez ainsi obtenir un message d'erreur dans lequel le système vous informe
d'une erreur à la ligne 32 alors que le problème provient d'un
souci à la ligne 24.
La ligne d'erreur indiquée par PHP est celle à partir de laquelle
il n'a pu continuer à travailler correctement. Il faut donc avoir le réflexe
d'entamer une relecture du code à partir de cette ligne et analyser ensuite le
code « à reculons » jusqu'à la ou les lignes à déboguer.
Hé oui, déboguer n'est pas toujours facile...
Exerçons-nous !
Et si nous nous exercions à déboguer
un petit programme ?
Le programme suivant doit afficher une diagonale de '*'.
Mais trois erreurs de syntaxe se
sont glissées dans le code source. À vous de retrouver et de corriger ces erreurs.
Ne vous inquiétez pas de la logique / complexité du programme ni
de la présence de l'instruction while(). Concentrez-vous
uniquement sur la syntaxe.
Aucun commentaire:
Enregistrer un commentaire
Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.