Formation au langage PHP 2


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.